diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml index c7ea36b147..80ff84e297 100644 --- a/.devcontainer/docker-compose.yml +++ b/.devcontainer/docker-compose.yml @@ -7,7 +7,7 @@ services: expose: - 5432/tcp volumes: - - ../dev:/var/lib/postgresql/data:z + - inventreedatabase:/var/lib/postgresql/data:z environment: POSTGRES_DB: inventree POSTGRES_USER: inventree_user @@ -19,7 +19,6 @@ services: target: dev args: base_image: "mcr.microsoft.com/vscode/devcontainers/base:alpine-3.18" - workspace: "${containerWorkspaceFolder}" data_dir: "dev" volumes: - ../:/home/inventree:z @@ -32,7 +31,12 @@ services: INVENTREE_DB_USER: inventree_user INVENTREE_DB_PASSWORD: inventree_password INVENTREE_PLUGINS_ENABLED: True + INVENTREE_SITE_URL: http://localhost:8000 + INVENTREE_CORS_ORIGIN_ALLOW_ALL: True INVENTREE_PY_ENV: /home/inventree/dev/venv depends_on: - db + +volumes: + inventreedatabase: diff --git a/.devcontainer/postCreateCommand.sh b/.devcontainer/postCreateCommand.sh index 04be371ef1..9cf0b9c3a0 100755 --- a/.devcontainer/postCreateCommand.sh +++ b/.devcontainer/postCreateCommand.sh @@ -7,9 +7,13 @@ git config --global --add safe.directory /home/inventree python3 -m venv /home/inventree/dev/venv --system-site-packages --upgrade-deps . /home/inventree/dev/venv/bin/activate -# setup InvenTree server +# Run initial InvenTree server setup invoke update -s + +# Configure dev environment invoke setup-dev + +# Install required frontend packages invoke frontend-install # remove existing gitconfig created by "Avoiding Dubious Ownership" step diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index ff3198174d..10a5e7a1c2 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,4 +1,5 @@ github: inventree ko_fi: inventree patreon: inventree +polar: inventree custom: [paypal.me/inventree] diff --git a/.github/actions/setup/action.yaml b/.github/actions/setup/action.yaml index d43fa57e71..c9f0fcfd89 100644 --- a/.github/actions/setup/action.yaml +++ b/.github/actions/setup/action.yaml @@ -40,7 +40,7 @@ runs: # Python installs - name: Set up Python ${{ env.python_version }} if: ${{ inputs.python == 'true' }} - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # pin@v4.7.1 + uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # pin@v5.0.0 with: python-version: ${{ env.python_version }} cache: pip diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000000..d7f67c7405 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,36 @@ +version: 2 +updates: + - package-ecosystem: github-actions + directory: / + schedule: + interval: daily + + - package-ecosystem: docker + directory: / + schedule: + interval: daily + + - package-ecosystem: pip + directory: /docker + schedule: + interval: daily + + - package-ecosystem: pip + directory: /docs + schedule: + interval: daily + + - package-ecosystem: npm + directory: / + schedule: + interval: daily + + - package-ecosystem: pip + directory: / + schedule: + interval: daily + + - package-ecosystem: npm + directory: /src/frontend + schedule: + interval: daily diff --git a/.github/workflows/backport.yml b/.github/workflows/backport.yml index cd97cccf9f..d885b0dde6 100644 --- a/.github/workflows/backport.yml +++ b/.github/workflows/backport.yml @@ -9,6 +9,9 @@ on: pull_request_target: types: [ "labeled", "closed" ] +permissions: + contents: read + jobs: backport: name: Backport PR @@ -22,7 +25,7 @@ jobs: ) steps: - name: Backport Action - uses: sqren/backport-github-action@f54e19901f2a57f8b82360f2490d47ee82ec82c6 # pin@v9.2.2 + uses: sqren/backport-github-action@f7073a2287aefc1fa12685eb25a712ab5620445c # pin@v9.2.2 with: github_token: ${{ secrets.GITHUB_TOKEN }} auto_backport_label_prefix: backport-to- diff --git a/.github/workflows/check_translations.yaml b/.github/workflows/check_translations.yaml index 315922717a..7e97eba8fa 100644 --- a/.github/workflows/check_translations.yaml +++ b/.github/workflows/check_translations.yaml @@ -11,6 +11,9 @@ on: env: python_version: 3.9 +permissions: + contents: read + jobs: check: diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 1a4982e9b4..3675e382bf 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -24,8 +24,14 @@ on: branches: - 'master' +permissions: + contents: read + jobs: paths-filter: + permissions: + contents: read # for dorny/paths-filter to fetch a list of changed files + pull-requests: read # for dorny/paths-filter to read pull requests name: Filter runs-on: ubuntu-latest @@ -34,7 +40,7 @@ jobs: steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 - - uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50 # pin@v2.11.1 + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # pin@v3.0.2 id: filter with: filters: | @@ -44,6 +50,7 @@ jobs: - docker-compose.yml - docker.dev.env - Dockerfile + - InvenTree/settings.py - requirements.txt - tasks.py @@ -58,21 +65,13 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} python_version: "3.11" - strategy: - matrix: - platform: ["linux/amd64", "linux/arm64"] - include: - - platform: linux/amd64 - os: ubuntu-latest - - platform: linux/arm64 - os: ubuntu-latest # in the future we can try to use alternative runners here - runs-on: ${{ matrix.os }} + runs-on: ubuntu-latest # in the future we can try to use alternative runners here steps: - name: Check out repo uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 - name: Set Up Python ${{ env.python_version }} - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # pin@v4.7.1 + uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # pin@v5.1.0 with: python-version: ${{ env.python_version }} - name: Version Check @@ -82,6 +81,14 @@ jobs: python3 ci/version_check.py echo "git_commit_hash=$(git rev-parse --short HEAD)" >> $GITHUB_ENV echo "git_commit_date=$(git show -s --format=%ci)" >> $GITHUB_ENV + - name: Test Docker Image + id: test-docker + run: | + docker build . --target production --tag inventree-test + docker run --rm inventree-test invoke --version + docker run --rm inventree-test invoke --list + docker run --rm inventree-test gunicorn --version + docker run --rm inventree-test pg_dump --version - name: Build Docker Image # Build the development docker image (using docker-compose.yml) run: docker-compose build --no-cache @@ -117,20 +124,28 @@ jobs: uses: docker/setup-qemu-action@68827325e0b33c7199eb31dd4e31fbe9023e06e3 # pin@v3.0.0 - name: Set up Docker Buildx if: github.event_name != 'pull_request' - uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # pin@v3.0.0 + uses: docker/setup-buildx-action@2b51285047da1547ffb1b2203d8be4c0af6b1f20 # pin@v3.2.0 - name: Set up cosign if: github.event_name != 'pull_request' - uses: sigstore/cosign-installer@11086d25041f77fe8fe7b9ea4e48e3b9192b8f19 # pin@v3.1.2 + uses: sigstore/cosign-installer@e1523de7571e31dbe865fd2e80c5c7c23ae71eb4 # pin@v3.4.0 + - name: Check if Dockerhub login is required + id: docker_login + run: | + if [ -z "${{ secrets.DOCKER_USERNAME }}" ]; then + echo "skip_dockerhub_login=true" >> $GITHUB_ENV + else + echo "skip_dockerhub_login=false" >> $GITHUB_ENV + fi - name: Login to Dockerhub - if: github.event_name != 'pull_request' - uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d # pin@v3.0.0 + if: github.event_name != 'pull_request' && steps.docker_login.outputs.skip_dockerhub_login != 'true' + uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # pin@v3.1.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@343f7c4344506bcbf9b4de18042ae17996df046d # pin@v3.0.0 + uses: docker/login-action@e92390c5fb421da1463c202d546fed0ec5c39f20 # pin@v3.1.0 with: registry: ghcr.io username: ${{ github.actor }} @@ -139,19 +154,19 @@ jobs: - name: Extract Docker metadata if: github.event_name != 'pull_request' id: meta - uses: docker/metadata-action@96383f45573cb7f253c731d3b3ab81c87ef81934 # pin@v5.0.0 + uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81 # pin@v5.5.1 with: images: | inventree/inventree - ghcr.io/inventree/inventree + ghcr.io/${{ github.repository }} - - name: Build and Push - id: build-and-push + - name: Push Docker Images + id: push-docker if: github.event_name != 'pull_request' - uses: docker/build-push-action@0565240e2d4ab88bba5387d719585280857ece09 # pin@v5.0.0 + uses: docker/build-push-action@2cdde995de11925a030ce8070c3d77a52ffcf1c0 # pin@v5.3.0 with: context: . - platforms: ${{ matrix.platform }} + platforms: linux/amd64,linux/arm64 push: true sbom: true provenance: false @@ -160,9 +175,3 @@ jobs: build-args: | commit_hash=${{ env.git_commit_hash }} commit_date=${{ env.git_commit_date }} - - - name: Sign the published image - if: ${{ false }} # github.event_name != 'pull_request' - env: - COSIGN_EXPERIMENTAL: "true" - run: cosign sign ${{ steps.meta.outputs.tags }}@${{ steps.build-and-push.outputs.digest }} diff --git a/.github/workflows/qc_checks.yaml b/.github/workflows/qc_checks.yaml index db11adc07f..78fe5b497d 100644 --- a/.github/workflows/qc_checks.yaml +++ b/.github/workflows/qc_checks.yaml @@ -10,7 +10,7 @@ on: env: python_version: 3.9 - node_version: 16 + node_version: 18 # The OS version must be set per job server_start_sleep: 60 @@ -20,7 +20,10 @@ env: INVENTREE_MEDIA_ROOT: ../test_inventree_media INVENTREE_STATIC_ROOT: ../test_inventree_static INVENTREE_BACKUP_DIR: ../test_inventree_backup + INVENTREE_SITE_URL: http://localhost:8000 +permissions: + contents: read jobs: paths-filter: name: Filter @@ -34,7 +37,7 @@ jobs: steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 - - uses: dorny/paths-filter@4512585405083f25c027a35db413c2b3b9006d50 # pin@v2.11.1 + - uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # pin@v3.0.2 id: filter with: filters: | @@ -81,12 +84,12 @@ jobs: steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 - name: Set up Python ${{ env.python_version }} - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # pin@v4.7.1 + uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # pin@v5.1.0 with: python-version: ${{ env.python_version }} cache: 'pip' - name: Run pre-commit Checks - uses: pre-commit/action@646c83fcd040023954eafda54b4db0192ce70507 # pin@v3.0.0 + uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # pin@v3.0.1 - name: Check Version run: | pip install requests @@ -102,7 +105,7 @@ jobs: - name: Checkout Code uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 - name: Set up Python ${{ env.python_version }} - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # pin@v4.7.1 + uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # pin@v5.1.0 with: python-version: ${{ env.python_version }} - name: Check Config @@ -111,7 +114,7 @@ jobs: pip install -r docs/requirements.txt python docs/ci/check_mkdocs_config.py - name: Check Links - uses: gaurav-nelson/github-action-markdown-link-check@v1 + uses: gaurav-nelson/github-action-markdown-link-check@5c5dfc0ac2e225883c0e5f03a85311ec2830d368 # v1 with: folder-path: docs config-file: docs/mlc_config.json @@ -144,9 +147,9 @@ jobs: dev-install: true update: true - name: Export API Documentation - run: invoke schema --ignore-warnings + run: invoke schema --ignore-warnings --filename InvenTree/schema.yml - name: Upload schema - uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # pin@v3.1.3 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # pin@v4.3.1 with: name: schema.yml path: InvenTree/schema.yml @@ -160,7 +163,7 @@ jobs: echo "URL: $url" curl -s -o api.yaml $url echo "Downloaded api.yaml" - - name: Check for differences in schemas + - name: Check for differences in API Schema if: needs.paths-filter.outputs.api == 'false' run: | diff --color -u InvenTree/schema.yml api.yaml @@ -181,17 +184,17 @@ jobs: name: Push new schema runs-on: ubuntu-20.04 needs: [paths-filter, schema] - if: needs.schema.result == 'success' && github.ref == 'refs/heads/master' && needs.paths-filter.outputs.api == 'true' + if: needs.schema.result == 'success' && github.ref == 'refs/heads/master' && needs.paths-filter.outputs.api == 'true' && github.repository_owner == 'inventree' env: version: ${{ needs.schema.outputs.version }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: repository: inventree/schema token: ${{ secrets.SCHEMA_PAT }} - name: Download schema artifact - uses: actions/download-artifact@v3 + uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 with: name: schema.yml - name: Move schema to correct location @@ -199,7 +202,7 @@ jobs: echo "Version: $version" mkdir export/${version} mv schema.yml export/${version}/api.yaml - - uses: stefanzweifel/git-auto-commit-action@v5 + - uses: stefanzweifel/git-auto-commit-action@8756aa072ef5b4a080af5dc8fef36c5d586e521d # v5.0.0 with: commit_message: "Update API schema for ${version}" @@ -216,9 +219,10 @@ jobs: INVENTREE_ADMIN_USER: testuser INVENTREE_ADMIN_PASSWORD: testpassword INVENTREE_ADMIN_EMAIL: test@test.com - INVENTREE_PYTHON_TEST_SERVER: http://localhost:12345 + INVENTREE_PYTHON_TEST_SERVER: http://127.0.0.1:12345 INVENTREE_PYTHON_TEST_USERNAME: testuser INVENTREE_PYTHON_TEST_PASSWORD: testpassword + INVENTREE_SITE_URL: http://127.0.0.1:12345 steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # pin@v4.1.1 @@ -484,7 +488,7 @@ jobs: run: cd src/frontend && npx playwright install --with-deps - name: Run Playwright tests run: cd src/frontend && npx playwright test - - uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # pin@v3.1.3 + - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # pin@v4.3.1 if: always() with: name: playwright-report @@ -505,12 +509,12 @@ jobs: - name: Install dependencies run: cd src/frontend && yarn install - name: Build frontend - run: cd src/frontend && npm run build + run: cd src/frontend && npm run compile && npm run build - name: Zip frontend run: | cd InvenTree/web/static zip -r frontend-build.zip web/ - - uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # pin@v3.1.3 + - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # pin@v4.3.1 with: name: frontend-build path: InvenTree/web/static/web diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b22280b195..ca751d0aac 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -5,6 +5,9 @@ on: release: types: [ published ] +permissions: + contents: read + jobs: stable: @@ -37,12 +40,12 @@ jobs: - name: Install dependencies run: cd src/frontend && yarn install - name: Build frontend - run: cd src/frontend && npm run build + run: cd src/frontend && npm run compile && npm run build - name: Zip frontend run: | cd InvenTree/web/static/web zip -r ../frontend-build.zip * - - uses: svenstaro/upload-release-action@1beeb572c19a9242f4361f4cee78f8e0d9aec5df # pin@2.7.0 + - uses: svenstaro/upload-release-action@04733e069f2d7f7f0b4aebc4fbdbce8613b03ccd # pin@2.9.0 with: repo_token: ${{ secrets.GITHUB_TOKEN }} file: InvenTree/web/static/frontend-build.zip diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml new file mode 100644 index 0000000000..371e0f0299 --- /dev/null +++ b/.github/workflows/scorecard.yml @@ -0,0 +1,72 @@ +# This workflow uses actions that are not certified by GitHub. They are provided +# by a third-party and are governed by separate terms of service, privacy +# policy, and support documentation. + +name: Scorecard supply-chain security +on: + # For Branch-Protection check. Only the default branch is supported. See + # https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection + branch_protection_rule: + # To guarantee Maintained check is occasionally updated. See + # https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained + schedule: + - cron: '32 0 * * 0' + push: + branches: [ "master" ] + +# Declare default permissions as read only. +permissions: read-all + +jobs: + analysis: + name: Scorecard analysis + runs-on: ubuntu-latest + permissions: + # Needed to upload the results to code-scanning dashboard. + security-events: write + # Needed to publish results and get a badge (see publish_results below). + id-token: write + # Uncomment the permissions below if installing in a private repository. + # contents: read + # actions: read + + steps: + - name: "Checkout code" + uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3.1.0 + with: + persist-credentials: false + + - name: "Run analysis" + uses: ossf/scorecard-action@0864cf19026789058feabb7e87baa5f140aac736 # v2.3.1 + with: + results_file: results.sarif + results_format: sarif + # (Optional) "write" PAT token. Uncomment the `repo_token` line below if: + # - you want to enable the Branch-Protection check on a *public* repository, or + # - you are installing Scorecard on a *private* repository + # To create the PAT, follow the steps in https://github.com/ossf/scorecard-action#authentication-with-pat. + # repo_token: ${{ secrets.SCORECARD_TOKEN }} + + # Public repositories: + # - Publish results to OpenSSF REST API for easy access by consumers + # - Allows the repository to include the Scorecard badge. + # - See https://github.com/ossf/scorecard-action#publishing-results. + # For private repositories: + # - `publish_results` will always be set to `false`, regardless + # of the value entered here. + publish_results: false + + # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF + # format to the repository Actions tab. + - name: "Upload artifact" + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 + with: + name: SARIF file + path: results.sarif + retention-days: 5 + + # Upload the results to GitHub's code scanning dashboard. + - name: "Upload to code-scanning" + uses: github/codeql-action/upload-sarif@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 + with: + sarif_file: results.sarif diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 64433876ef..e48c2bd014 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -5,6 +5,9 @@ on: schedule: - cron: '24 11 * * *' +permissions: + contents: read + jobs: stale: @@ -14,7 +17,7 @@ jobs: pull-requests: write steps: - - uses: actions/stale@1160a2240286f5da8ec72b1c0816ce2481aabf84 # pin@v8.0.0 + - uses: actions/stale@28ca1036281a5e5922ead5184a1bbf96e5fc984e # pin@v9.0.0 with: repo-token: ${{ secrets.GITHUB_TOKEN }} stale-issue-message: 'This issue seems stale. Please react to show this is still important.' diff --git a/.github/workflows/translations.yml b/.github/workflows/translations.yml index 600d5d22c2..bdafd8cac3 100644 --- a/.github/workflows/translations.yml +++ b/.github/workflows/translations.yml @@ -7,7 +7,10 @@ on: env: python_version: 3.9 - node_version: 16 + node_version: 18 + +permissions: + contents: write jobs: build: @@ -22,6 +25,7 @@ jobs: INVENTREE_MEDIA_ROOT: ./media INVENTREE_STATIC_ROOT: ./static INVENTREE_BACKUP_DIR: ./backup + INVENTREE_SITE_URL: http://localhost:8000 steps: - name: Checkout Code diff --git a/.gitignore b/.gitignore index 5f2b31d170..bcc2f2ac5d 100644 --- a/.gitignore +++ b/.gitignore @@ -104,3 +104,7 @@ api.yaml # web frontend (static files) InvenTree/web/static + +# Generated docs files +docs/docs/api/*.yml +docs/docs/api/schema/*.yml diff --git a/.pkgr.yml b/.pkgr.yml index 2bb7ae530e..88f27034a5 100644 --- a/.pkgr.yml +++ b/.pkgr.yml @@ -19,9 +19,9 @@ before: - contrib/packager.io/before.sh dependencies: - curl - - python3.9 - - python3.9-venv - - python3.9-dev + - "python3.9 | python3.10 | python3.11" + - "python3.9-venv | python3.10-venv | python3.11-venv" + - "python3.9-dev | python3.10-dev | python3.11-dev" - python3-pip - python3-cffi - python3-brotli @@ -36,4 +36,3 @@ dependencies: targets: ubuntu-20.04: true debian-11: true - debian-12: true diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 8b340ebe93..7ace7dd026 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -5,7 +5,9 @@ exclude: | InvenTree/InvenTree/static/.*| InvenTree/locale/.*| src/frontend/src/locales/.*| - .*/migrations/.* + .*/migrations/.* | + src/frontend/yarn.lock | + yarn.lock )$ repos: - repo: https://github.com/pre-commit/pre-commit-hooks @@ -16,7 +18,7 @@ repos: - id: check-yaml - id: mixed-line-ending - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.2.2 + rev: v0.3.4 hooks: - id: ruff-format args: [--preview] @@ -25,16 +27,16 @@ repos: --fix, --preview ] -- repo: https://github.com/matmair/ruff-pre-commit - rev: 830893bf46db844d9c99b6c468e285199adf2de6 # uv-018 +- repo: https://github.com/astral-sh/uv-pre-commit + rev: v0.1.24 hooks: - id: pip-compile name: pip-compile requirements-dev.in - args: [requirements-dev.in, -o, requirements-dev.txt, --python-version=3.9] + args: [requirements-dev.in, -o, requirements-dev.txt, --python-version=3.9, --no-strip-extras] files: ^requirements-dev\.(in|txt)$ - id: pip-compile name: pip-compile requirements.txt - args: [requirements.in, -o, requirements.txt,--python-version=3.9] + args: [requirements.in, -o, requirements.txt,--python-version=3.9, --no-strip-extras] files: ^requirements\.(in|txt)$ - repo: https://github.com/Riverside-Healthcare/djLint rev: v1.34.1 @@ -60,7 +62,7 @@ repos: - "prettier@^2.4.1" - "@trivago/prettier-plugin-sort-imports" - repo: https://github.com/pre-commit/mirrors-eslint - rev: "v9.0.0-beta.0" + rev: "v9.0.0-rc.0" hooks: - id: eslint additional_dependencies: @@ -71,3 +73,11 @@ repos: - "@typescript-eslint/eslint-plugin@latest" - "@typescript-eslint/parser" files: ^src/frontend/.*\.(js|jsx|ts|tsx)$ +- repo: https://github.com/gitleaks/gitleaks + rev: v8.18.2 + hooks: + - id: gitleaks +#- repo: https://github.com/jumanjihouse/pre-commit-hooks +# rev: 3.0.0 +# hooks: +# - id: shellcheck diff --git a/Dockerfile b/Dockerfile index c87a7dea44..bb3f3134e3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,7 +23,6 @@ ENV PYTHONUNBUFFERED 1 ENV PIP_DISABLE_PIP_VERSION_CHECK 1 ENV INVOKE_RUN_SHELL="/bin/ash" -ENV INVENTREE_LOG_LEVEL="WARNING" ENV INVENTREE_DOCKER="true" # InvenTree paths @@ -48,8 +47,6 @@ ENV INVENTREE_BACKGROUND_WORKERS="4" ENV INVENTREE_WEB_ADDR=0.0.0.0 ENV INVENTREE_WEB_PORT=8000 -ENV VIRTUAL_ENV=/usr/local - LABEL org.label-schema.schema-version="1.0" \ org.label-schema.build-date=${DATE} \ org.label-schema.vendor="inventree" \ @@ -65,8 +62,11 @@ RUN apk add --no-cache \ libjpeg libwebp zlib \ # Weasyprint requirements : https://doc.courtbouillon.org/weasyprint/stable/first_steps.html#alpine-3-12 py3-pip py3-pillow py3-cffi py3-brotli pango poppler-utils openldap \ - # Core database packages - postgresql13-client && \ + # Postgres client + postgresql13-client \ + # MySQL / MariaDB client + mariadb-client mariadb-connector-c \ + && \ # fonts apk --update --upgrade --no-cache add fontconfig ttf-freefont font-noto terminus-font && fc-cache -f @@ -96,7 +96,7 @@ FROM inventree_base as prebuild ENV PATH=/root/.local/bin:$PATH RUN ./install_build_packages.sh --no-cache --virtual .build-deps && \ - pip install --user uv --no-cache-dir && pip install -r base_requirements.txt -r requirements.txt --no-cache && \ + pip install --user -r base_requirements.txt -r requirements.txt --no-cache && \ apk --purge del .build-deps # Frontend builder image: diff --git a/InvenTree/InvenTree/api.py b/InvenTree/InvenTree/api.py index 0183c12c20..c5f6c110ae 100644 --- a/InvenTree/InvenTree/api.py +++ b/InvenTree/InvenTree/api.py @@ -91,7 +91,7 @@ class VersionView(APIView): }) -class VersionSerializer(serializers.Serializer): +class VersionInformationSerializer(serializers.Serializer): """Serializer for a single version.""" version = serializers.CharField() @@ -101,21 +101,21 @@ class VersionSerializer(serializers.Serializer): latest = serializers.BooleanField() class Meta: - """Meta class for VersionSerializer.""" + """Meta class for VersionInformationSerializer.""" - fields = ['version', 'date', 'gh', 'text', 'latest'] + fields = '__all__' class VersionApiSerializer(serializers.Serializer): """Serializer for the version api endpoint.""" - VersionSerializer(many=True) + VersionInformationSerializer(many=True) class VersionTextView(ListAPI): """Simple JSON endpoint for InvenTree version text.""" - serializer_class = VersionSerializer + serializer_class = VersionInformationSerializer permission_classes = [permissions.IsAdminUser] diff --git a/InvenTree/InvenTree/api_version.py b/InvenTree/InvenTree/api_version.py index 48dc8df775..8d2c02ccfe 100644 --- a/InvenTree/InvenTree/api_version.py +++ b/InvenTree/InvenTree/api_version.py @@ -1,11 +1,41 @@ """InvenTree API version information.""" # InvenTree API version -INVENTREE_API_VERSION = 178 +INVENTREE_API_VERSION = 185 """Increment this API version number whenever there is a significant change to the API that any clients need to know about.""" INVENTREE_API_TEXT = """ +v185 - 2024-03-24 : https://github.com/inventree/InvenTree/pull/6836 + - Remove /plugin/activate endpoint + - Update docstrings and typing for various API endpoints (no functional changes) + +v184 - 2024-03-17 : https://github.com/inventree/InvenTree/pull/10464 + - Add additional fields for tests (start/end datetime, test station) + +v183 - 2024-03-14 : https://github.com/inventree/InvenTree/pull/5972 + - Adds "category_default_location" annotated field to part serializer + - Adds "part_detail.category_default_location" annotated field to stock item serializer + - Adds "part_detail.category_default_location" annotated field to purchase order line serializer + - Adds "parent_default_location" annotated field to category serializer + +v182 - 2024-03-13 : https://github.com/inventree/InvenTree/pull/6714 + - Expose ReportSnippet model to the /report/snippet/ API endpoint + - Expose ReportAsset model to the /report/asset/ API endpoint + +v181 - 2024-02-21 : https://github.com/inventree/InvenTree/pull/6541 + - Adds "width" and "height" fields to the LabelTemplate API endpoint + - Adds "page_size" and "landscape" fields to the ReportTemplate API endpoint + +v180 - 2024-3-02 : https://github.com/inventree/InvenTree/pull/6463 + - Tweaks to API documentation to allow automatic documentation generation + +v179 - 2024-03-01 : https://github.com/inventree/InvenTree/pull/6605 + - Adds "subcategories" count to PartCategory serializer + - Adds "sublocations" count to StockLocation serializer + - Adds "image" field to PartBrief serializer + - Adds "image" field to CompanyBrief serializer + v178 - 2024-02-29 : https://github.com/inventree/InvenTree/pull/6604 - Adds "external_stock" field to the Part API endpoint - Adds "external_stock" field to the BomItem API endpoint diff --git a/InvenTree/InvenTree/conversion.py b/InvenTree/InvenTree/conversion.py index e154dc76f8..c02fd7a561 100644 --- a/InvenTree/InvenTree/conversion.py +++ b/InvenTree/InvenTree/conversion.py @@ -39,9 +39,9 @@ def reload_unit_registry(): reg = pint.UnitRegistry(autoconvert_offset_to_baseunit=True) # Aliases for temperature units - reg.define('@alias degC = celsius = Celsius') - reg.define('@alias degF = fahrenheit = Fahrenheit') - reg.define('@alias degK = kelvin = Kelvin') + reg.define('@alias degC = Celsius') + reg.define('@alias degF = Fahrenheit') + reg.define('@alias degK = Kelvin') # Define some "standard" additional units reg.define('piece = 1') @@ -165,6 +165,13 @@ def convert_physical_value(value: str, unit: str = None, strip_units=True): value = str(value).strip() if value else '' unit = str(unit).strip() if unit else '' + # Handle imperial length measurements + if value.count("'") == 1 and value.endswith("'"): + value = value.replace("'", ' feet') + + if value.count('"') == 1 and value.endswith('"'): + value = value.replace('"', ' inches') + # Error on blank values if not value: raise ValidationError(_('No value provided')) diff --git a/InvenTree/InvenTree/files.py b/InvenTree/InvenTree/files.py new file mode 100644 index 0000000000..76a6f03e65 --- /dev/null +++ b/InvenTree/InvenTree/files.py @@ -0,0 +1,8 @@ +"""Helpers for file handling in InvenTree.""" + +from pathlib import Path + +from django.conf import settings + +TEMPLATES_DIR = Path(__file__).parent.parent +MEDIA_STORAGE_DIR = settings.MEDIA_ROOT diff --git a/InvenTree/InvenTree/helpers.py b/InvenTree/InvenTree/helpers.py index d43a462f92..82116c26f6 100644 --- a/InvenTree/InvenTree/helpers.py +++ b/InvenTree/InvenTree/helpers.py @@ -1,5 +1,6 @@ """Provides helper functions used throughout the InvenTree project.""" +import datetime import hashlib import io import json @@ -8,16 +9,19 @@ import os import os.path import re from decimal import Decimal, InvalidOperation -from typing import TypeVar +from pathlib import Path +from typing import TypeVar, Union from wsgiref.util import FileWrapper +import django.utils.timezone as timezone from django.conf import settings from django.contrib.staticfiles.storage import StaticFilesStorage from django.core.exceptions import FieldError, ValidationError -from django.core.files.storage import default_storage +from django.core.files.storage import Storage, default_storage from django.http import StreamingHttpResponse from django.utils.translation import gettext_lazy as _ +import pytz import regex from bleach import clean from djmoney.money import Money @@ -87,11 +91,24 @@ def generateTestKey(test_name: str) -> str: key = test_name.strip().lower() key = key.replace(' ', '') - # Remove any characters that cannot be used to represent a variable - key = re.sub(r'[^a-zA-Z0-9_]', '', key) + def valid_char(char: str): + """Determine if a particular character is valid for use in a test key.""" + if not char.isprintable(): + return False - # If the key starts with a digit, prefix with an underscore - if key[0].isdigit(): + if char.isidentifier(): + return True + + if char.isalnum(): + return True + + return False + + # Remove any characters that cannot be used to represent a variable + key = ''.join([c for c in key if valid_char(c)]) + + # If the key starts with a non-identifier character, prefix with an underscore + if len(key) > 0 and not key[0].isidentifier(): key = '_' + key return key @@ -845,9 +862,87 @@ def hash_barcode(barcode_data): return str(hash.hexdigest()) -def hash_file(filename: str): +def hash_file(filename: Union[str, Path], storage: Union[Storage, None] = None): """Return the MD5 hash of a file.""" - return hashlib.md5(open(filename, 'rb').read()).hexdigest() + content = ( + open(filename, 'rb').read() + if storage is None + else storage.open(str(filename), 'rb').read() + ) + return hashlib.md5(content).hexdigest() + + +def current_time(local=True): + """Return the current date and time as a datetime object. + + - If timezone support is active, returns a timezone aware time + - If timezone support is not active, returns a timezone naive time + + Arguments: + local: Return the time in the local timezone, otherwise UTC (default = True) + + """ + if settings.USE_TZ: + now = timezone.now() + now = to_local_time(now, target_tz=server_timezone() if local else 'UTC') + return now + else: + return datetime.datetime.now() + + +def current_date(local=True): + """Return the current date.""" + return current_time(local=local).date() + + +def server_timezone() -> str: + """Return the timezone of the server as a string. + + e.g. "UTC" / "Australia/Sydney" etc + """ + return settings.TIME_ZONE + + +def to_local_time(time, target_tz: str = None): + """Convert the provided time object to the local timezone. + + Arguments: + time: The time / date to convert + target_tz: The desired timezone (string) - defaults to server time + + Returns: + A timezone aware datetime object, with the desired timezone + + Raises: + TypeError: If the provided time object is not a datetime or date object + """ + if isinstance(time, datetime.datetime): + pass + elif isinstance(time, datetime.date): + time = timezone.datetime(year=time.year, month=time.month, day=time.day) + else: + raise TypeError( + f'Argument must be a datetime or date object (found {type(time)}' + ) + + # Extract timezone information from the provided time + source_tz = getattr(time, 'tzinfo', None) + + if not source_tz: + # Default to UTC if not provided + source_tz = pytz.utc + + if not target_tz: + target_tz = server_timezone() + + try: + target_tz = pytz.timezone(str(target_tz)) + except pytz.UnknownTimeZoneError: + target_tz = pytz.utc + + target_time = time.replace(tzinfo=source_tz).astimezone(target_tz) + + return target_time def get_objectreference( diff --git a/InvenTree/InvenTree/locales.py b/InvenTree/InvenTree/locales.py index b0983871b3..d5c7391261 100644 --- a/InvenTree/InvenTree/locales.py +++ b/InvenTree/InvenTree/locales.py @@ -2,12 +2,14 @@ If a new language translation is supported, it must be added here After adding a new language, run the following command: + python manage.py makemessages -l -e html,js,py --no-wrap -where is the code for the new language + - where is the code for the new language + Additionally, update the following files with the new locale code: - /src/frontend/.linguirc file -- /src/frontend/src/context/LanguageContext.tsx +- /src/frontend/src/contexts/LanguageContext.tsx """ from django.utils.translation import gettext_lazy as _ @@ -30,6 +32,7 @@ LOCALES = [ ('it', _('Italian')), ('ja', _('Japanese')), ('ko', _('Korean')), + ('lv', _('Latvian')), ('nl', _('Dutch')), ('no', _('Norwegian')), ('pl', _('Polish')), diff --git a/InvenTree/InvenTree/middleware.py b/InvenTree/InvenTree/middleware.py index e9a272e13b..1eda1df57a 100644 --- a/InvenTree/InvenTree/middleware.py +++ b/InvenTree/InvenTree/middleware.py @@ -74,6 +74,7 @@ class AuthRequiredMiddleware(object): # Is the function exempt from auth requirements? path_func = resolve(request.path).func + if getattr(path_func, 'auth_exempt', False) is True: return self.get_response(request) @@ -119,7 +120,13 @@ class AuthRequiredMiddleware(object): ] # Do not redirect requests to any of these paths - paths_ignore = ['/api/', '/js/', '/media/', '/static/'] + paths_ignore = [ + '/api/', + '/auth/', + '/js/', + settings.MEDIA_URL, + settings.STATIC_URL, + ] if path not in urls and not any( path.startswith(p) for p in paths_ignore diff --git a/InvenTree/InvenTree/serializers.py b/InvenTree/InvenTree/serializers.py index 4745647ea5..3b4978d15d 100644 --- a/InvenTree/InvenTree/serializers.py +++ b/InvenTree/InvenTree/serializers.py @@ -352,7 +352,12 @@ class InvenTreeModelSerializer(serializers.ModelSerializer): try: instance.full_clean() except (ValidationError, DjangoValidationError) as exc: - data = exc.message_dict + if hasattr(exc, 'message_dict'): + data = exc.message_dict + elif hasattr(exc, 'message'): + data = {'non_field_errors': [str(exc.message)]} + else: + data = {'non_field_errors': [str(exc)]} # Change '__all__' key (django style) to 'non_field_errors' (DRF style) if '__all__' in data: diff --git a/InvenTree/InvenTree/settings.py b/InvenTree/InvenTree/settings.py index f08b85e2e7..fd660451ba 100644 --- a/InvenTree/InvenTree/settings.py +++ b/InvenTree/InvenTree/settings.py @@ -22,9 +22,11 @@ from django.http import Http404 from django.utils.translation import gettext_lazy as _ import moneyed +import pytz from dotenv import load_dotenv from InvenTree.config import get_boolean_setting, get_custom_file, get_setting +from InvenTree.ready import isInMainThread from InvenTree.sentry import default_sentry_dsn, init_sentry from InvenTree.version import checkMinPythonVersion, inventreeApiVersion @@ -130,6 +132,9 @@ DATA_UPLOAD_MAX_NUMBER_FIELDS = 10000 # Web URL endpoint for served static files STATIC_URL = '/static/' +# Web URL endpoint for served media files +MEDIA_URL = '/media/' + STATICFILES_DIRS = [] # Translated Template settings @@ -155,9 +160,6 @@ STATFILES_I18_PROCESSORS = ['InvenTree.context.status_codes'] # Color Themes Directory STATIC_COLOR_THEMES_DIR = STATIC_ROOT.joinpath('css', 'color-themes').resolve() -# Web URL endpoint for served media files -MEDIA_URL = '/media/' - # Database backup options # Ref: https://django-dbbackup.readthedocs.io/en/master/configuration.html DBBACKUP_SEND_EMAIL = False @@ -205,6 +207,7 @@ INSTALLED_APPS = [ 'django.contrib.auth', 'django.contrib.contenttypes', 'user_sessions', # db user sessions + 'whitenoise.runserver_nostatic', 'django.contrib.messages', 'django.contrib.staticfiles', 'django.contrib.sites', @@ -249,6 +252,7 @@ MIDDLEWARE = CONFIG.get( 'django.middleware.locale.LocaleMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'corsheaders.middleware.CorsMiddleware', + 'whitenoise.middleware.WhiteNoiseMiddleware', 'django.middleware.common.CommonMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'InvenTree.middleware.InvenTreeRemoteUserMiddleware', # Remote / proxy auth @@ -294,7 +298,10 @@ if LDAP_AUTH: # get global options from dict and use ldap.OPT_* as keys and values global_options_dict = get_setting( - 'INVENTREE_LDAP_GLOBAL_OPTIONS', 'ldap.global_options', {}, dict + 'INVENTREE_LDAP_GLOBAL_OPTIONS', + 'ldap.global_options', + default_value=None, + typecast=dict, ) global_options = {} for k, v in global_options_dict.items(): @@ -364,24 +371,16 @@ if LDAP_AUTH: ) AUTH_LDAP_DENY_GROUP = get_setting('INVENTREE_LDAP_DENY_GROUP', 'ldap.deny_group') AUTH_LDAP_USER_FLAGS_BY_GROUP = get_setting( - 'INVENTREE_LDAP_USER_FLAGS_BY_GROUP', 'ldap.user_flags_by_group', {}, dict + 'INVENTREE_LDAP_USER_FLAGS_BY_GROUP', + 'ldap.user_flags_by_group', + default_value=None, + typecast=dict, ) AUTH_LDAP_FIND_GROUP_PERMS = True -# Internal IP addresses allowed to see the debug toolbar -INTERNAL_IPS = ['127.0.0.1'] - # Internal flag to determine if we are running in docker mode DOCKER = get_boolean_setting('INVENTREE_DOCKER', default_value=False) -if DOCKER: # pragma: no cover - # Internal IP addresses are different when running under docker - hostname, ___, ips = socket.gethostbyname_ex(socket.gethostname()) - INTERNAL_IPS = [ip[: ip.rfind('.')] + '.1' for ip in ips] + [ - '127.0.0.1', - '10.0.2.2', - ] - # Allow secure http developer server in debug mode if DEBUG: INSTALLED_APPS.append('sslserver') @@ -469,21 +468,6 @@ if USE_JWT: INSTALLED_APPS.append('rest_framework_simplejwt') # WSGI default setting -SPECTACULAR_SETTINGS = { - 'TITLE': 'InvenTree API', - 'DESCRIPTION': 'API for InvenTree - the intuitive open source inventory management system', - 'LICENSE': { - 'name': 'MIT', - 'url': 'https://github.com/inventree/InvenTree/blob/master/LICENSE', - }, - 'EXTERNAL_DOCS': { - 'description': 'More information about InvenTree in the official docs', - 'url': 'https://docs.inventree.org', - }, - 'VERSION': str(inventreeApiVersion()), - 'SERVE_INCLUDE_SCHEMA': False, -} - WSGI_APPLICATION = 'InvenTree.wsgi.application' """ @@ -497,7 +481,7 @@ Configure the database backend based on the user-specified values. logger.debug('Configuring database backend:') # Extract database configuration from the config.yaml file -db_config = CONFIG.get('database', {}) +db_config = CONFIG.get('database', None) if not db_config: db_config = {} @@ -573,7 +557,10 @@ Ref: https://docs.djangoproject.com/en/3.2/ref/settings/#std:setting-OPTIONS # connecting to the database server (such as a replica failover) don't sit and # wait for possibly an hour or more, just tell the client something went wrong # and let the client retry when they want to. -db_options = db_config.get('OPTIONS', db_config.get('options', {})) +db_options = db_config.get('OPTIONS', db_config.get('options', None)) + +if db_options is None: + db_options = {} # Specific options for postgres backend if 'postgres' in db_engine: # pragma: no cover @@ -736,7 +723,10 @@ if TRACING_ENABLED: # pragma: no cover logger.info('OpenTelemetry tracing enabled') _t_resources = get_setting( - 'INVENTREE_TRACING_RESOURCES', 'tracing.resources', {}, dict + 'INVENTREE_TRACING_RESOURCES', + 'tracing.resources', + default_value=None, + typecast=dict, ) cstm_tags = {'inventree.env.' + k: v for k, v in inventree_tags.items()} tracing_resources = {**cstm_tags, **_t_resources} @@ -748,7 +738,12 @@ if TRACING_ENABLED: # pragma: no cover console=get_boolean_setting( 'INVENTREE_TRACING_CONSOLE', 'tracing.console', False ), - auth=get_setting('INVENTREE_TRACING_AUTH', 'tracing.auth', {}), + auth=get_setting( + 'INVENTREE_TRACING_AUTH', + 'tracing.auth', + default_value=None, + typecast=dict, + ), is_http=get_setting('INVENTREE_TRACING_IS_HTTP', 'tracing.is_http', True), append_http=get_boolean_setting( 'INVENTREE_TRACING_APPEND_HTTP', 'tracing.append_http', True @@ -945,13 +940,20 @@ LOCALE_PATHS = (BASE_DIR.joinpath('locale/'),) TIME_ZONE = get_setting('INVENTREE_TIMEZONE', 'timezone', 'UTC') -USE_I18N = True +# Check that the timezone is valid +try: + pytz.timezone(TIME_ZONE) +except pytz.exceptions.UnknownTimeZoneError: # pragma: no cover + raise ValueError(f"Specified timezone '{TIME_ZONE}' is not valid") +USE_I18N = True # Do not use native timezone support in "test" mode # It generates a *lot* of cruft in the logs if not TESTING: USE_TZ = True # pragma: no cover +else: + USE_TZ = False DATE_INPUT_FORMATS = ['%Y-%m-%d'] @@ -990,13 +992,33 @@ if not SITE_MULTI: ALLOWED_HOSTS = get_setting( 'INVENTREE_ALLOWED_HOSTS', config_key='allowed_hosts', - default_value=['*'], + default_value=[], typecast=list, ) if SITE_URL and SITE_URL not in ALLOWED_HOSTS: ALLOWED_HOSTS.append(SITE_URL) +if not ALLOWED_HOSTS: + if DEBUG: + logger.info( + 'No ALLOWED_HOSTS specified. Defaulting to ["*"] for debug mode. This is not recommended for production use' + ) + ALLOWED_HOSTS = ['*'] + elif not TESTING: + logger.error( + 'No ALLOWED_HOSTS specified. Please provide a list of allowed hosts, or specify INVENTREE_SITE_URL' + ) + + # Server cannot run without ALLOWED_HOSTS + if isInMainThread(): + sys.exit(-1) + +# Ensure that the ALLOWED_HOSTS do not contain any scheme info +for i, host in enumerate(ALLOWED_HOSTS): + if '://' in host: + ALLOWED_HOSTS[i] = host.split('://')[1] + # List of trusted origins for unsafe requests # Ref: https://docs.djangoproject.com/en/4.2/ref/settings/#csrf-trusted-origins CSRF_TRUSTED_ORIGINS = get_setting( @@ -1010,6 +1032,20 @@ CSRF_TRUSTED_ORIGINS = get_setting( if SITE_URL and SITE_URL not in CSRF_TRUSTED_ORIGINS: CSRF_TRUSTED_ORIGINS.append(SITE_URL) +if not TESTING and len(CSRF_TRUSTED_ORIGINS) == 0: + if DEBUG: + logger.warning( + 'No CSRF_TRUSTED_ORIGINS specified. Defaulting to http://* for debug mode. This is not recommended for production use' + ) + CSRF_TRUSTED_ORIGINS = ['http://*'] + + elif isInMainThread(): + # Server thread cannot run without CSRF_TRUSTED_ORIGINS + logger.error( + 'No CSRF_TRUSTED_ORIGINS specified. Please provide a list of trusted origins, or specify INVENTREE_SITE_URL' + ) + sys.exit(-1) + USE_X_FORWARDED_HOST = get_boolean_setting( 'INVENTREE_USE_X_FORWARDED_HOST', config_key='use_x_forwarded_host', @@ -1037,8 +1073,8 @@ CORS_ALLOW_CREDENTIALS = get_boolean_setting( default_value=True, ) -# Only allow CORS access to API and media endpoints -CORS_URLS_REGEX = r'^/(api|media|static)/.*$' +# Only allow CORS access to the following URL endpoints +CORS_URLS_REGEX = r'^/(api|auth|media|static)/.*$' CORS_ALLOWED_ORIGINS = get_setting( 'INVENTREE_CORS_ORIGIN_WHITELIST', @@ -1051,6 +1087,27 @@ CORS_ALLOWED_ORIGINS = get_setting( if SITE_URL and SITE_URL not in CORS_ALLOWED_ORIGINS: CORS_ALLOWED_ORIGINS.append(SITE_URL) +CORS_ALLOWED_ORIGIN_REGEXES = get_setting( + 'INVENTREE_CORS_ORIGIN_REGEX', + config_key='cors.regex', + default_value=[], + typecast=list, +) + +# In debug mode allow CORS requests from localhost +# This allows connection from the frontend development server +if DEBUG: + CORS_ALLOWED_ORIGIN_REGEXES.append(r'^http://localhost:\d+$') + +if CORS_ALLOW_ALL_ORIGINS: + logger.info('CORS: All origins allowed') +else: + if CORS_ALLOWED_ORIGINS: + logger.info('CORS: Whitelisted origins: %s', CORS_ALLOWED_ORIGINS) + + if CORS_ALLOWED_ORIGIN_REGEXES: + logger.info('CORS: Whitelisted origin regexes: %s', CORS_ALLOWED_ORIGIN_REGEXES) + for app in SOCIAL_BACKENDS: # Ensure that the app starts with 'allauth.socialaccount.providers' social_prefix = 'allauth.socialaccount.providers.' @@ -1075,14 +1132,35 @@ SOCIALACCOUNT_OPENID_CONNECT_URL_PREFIX = '' ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS = get_setting( 'INVENTREE_LOGIN_CONFIRM_DAYS', 'login_confirm_days', 3, typecast=int ) -ACCOUNT_LOGIN_ATTEMPTS_LIMIT = get_setting( - 'INVENTREE_LOGIN_ATTEMPTS', 'login_attempts', 5, typecast=int -) + +# allauth rate limiting: https://docs.allauth.org/en/latest/account/rate_limits.html +# The default login rate limit is "5/m/user,5/m/ip,5/m/key" +login_attempts = get_setting('INVENTREE_LOGIN_ATTEMPTS', 'login_attempts', 5) + +try: + login_attempts = int(login_attempts) + login_attempts = f'{login_attempts}/m/ip,{login_attempts}/m/key' +except ValueError: + pass + +ACCOUNT_RATE_LIMITS = {'login_failed': login_attempts} + +# Default protocol for login ACCOUNT_DEFAULT_HTTP_PROTOCOL = get_setting( - 'INVENTREE_LOGIN_DEFAULT_HTTP_PROTOCOL', 'login_default_protocol', 'http' + 'INVENTREE_LOGIN_DEFAULT_HTTP_PROTOCOL', 'login_default_protocol', None ) + +if ACCOUNT_DEFAULT_HTTP_PROTOCOL is None: + if SITE_URL and SITE_URL.startswith('https://'): + # auto-detect HTTPS prtoocol + ACCOUNT_DEFAULT_HTTP_PROTOCOL = 'https' + else: + # default to http + ACCOUNT_DEFAULT_HTTP_PROTOCOL = 'http' + ACCOUNT_LOGOUT_ON_PASSWORD_CHANGE = True ACCOUNT_PREVENT_ENUMERATION = True +ACCOUNT_EMAIL_SUBJECT_PREFIX = EMAIL_SUBJECT_PREFIX # 2FA REMOVE_SUCCESS_URL = 'settings' @@ -1165,6 +1243,9 @@ PLUGIN_RETRY = get_setting( ) # How often should plugin loading be tried? PLUGIN_FILE_CHECKED = False # Was the plugin file checked? +# Flag to allow table events during testing +TESTING_TABLE_EVENTS = False + # User interface customization values CUSTOM_LOGO = get_custom_file( 'INVENTREE_CUSTOM_LOGO', 'customize.logo', 'custom logo', lookup_media=True @@ -1173,7 +1254,9 @@ CUSTOM_SPLASH = get_custom_file( 'INVENTREE_CUSTOM_SPLASH', 'customize.splash', 'custom splash' ) -CUSTOMIZE = get_setting('INVENTREE_CUSTOMIZE', 'customize', {}) +CUSTOMIZE = get_setting( + 'INVENTREE_CUSTOMIZE', 'customize', default_value=None, typecast=dict +) # Load settings for the frontend interface FRONTEND_SETTINGS = config.get_frontend_settings(debug=DEBUG) @@ -1208,3 +1291,23 @@ if CUSTOM_FLAGS: # Magic login django-sesame SESAME_MAX_AGE = 300 LOGIN_REDIRECT_URL = '/api/auth/login-redirect/' + +# Configuratino for API schema generation +SPECTACULAR_SETTINGS = { + 'TITLE': 'InvenTree API', + 'DESCRIPTION': 'API for InvenTree - the intuitive open source inventory management system', + 'LICENSE': { + 'name': 'MIT', + 'url': 'https://github.com/inventree/InvenTree/blob/master/LICENSE', + }, + 'EXTERNAL_DOCS': { + 'description': 'More information about InvenTree in the official docs', + 'url': 'https://docs.inventree.org', + }, + 'VERSION': str(inventreeApiVersion()), + 'SERVE_INCLUDE_SCHEMA': False, + 'SCHEMA_PATH_PREFIX': '/api/', +} + +if SITE_URL and not TESTING: + SPECTACULAR_SETTINGS['SERVERS'] = [{'url': SITE_URL}] diff --git a/InvenTree/InvenTree/tasks.py b/InvenTree/InvenTree/tasks.py index 036ac98796..4356509e12 100644 --- a/InvenTree/InvenTree/tasks.py +++ b/InvenTree/InvenTree/tasks.py @@ -180,6 +180,8 @@ def offload_task( Returns: bool: True if the task was offloaded (or ran), False otherwise """ + from InvenTree.exceptions import log_error + try: import importlib @@ -213,6 +215,7 @@ def offload_task( return False except Exception as exc: raise_warning(f"WARNING: '{taskname}' not offloaded due to {str(exc)}") + log_error('InvenTree.offload_task') return False else: if callable(taskname): @@ -233,6 +236,7 @@ def offload_task( try: _mod = importlib.import_module(app_mod) except ModuleNotFoundError: + log_error('InvenTree.offload_task') raise_warning( f"WARNING: '{taskname}' not started - No module named '{app_mod}'" ) @@ -249,6 +253,7 @@ def offload_task( if not _func: _func = eval(func) # pragma: no cover except NameError: + log_error('InvenTree.offload_task') raise_warning( f"WARNING: '{taskname}' not started - No function named '{func}'" ) @@ -258,6 +263,7 @@ def offload_task( try: _func(*args, **kwargs) except Exception as exc: + log_error('InvenTree.offload_task') raise_warning(f"WARNING: '{taskname}' not started due to {str(exc)}") return False diff --git a/InvenTree/InvenTree/tests.py b/InvenTree/InvenTree/tests.py index 8a3d41b528..ff60d83881 100644 --- a/InvenTree/InvenTree/tests.py +++ b/InvenTree/InvenTree/tests.py @@ -14,8 +14,10 @@ from django.core import mail from django.core.exceptions import ValidationError from django.test import TestCase, override_settings, tag from django.urls import reverse +from django.utils import timezone import pint.errors +import pytz from djmoney.contrib.exchange.exceptions import MissingRate from djmoney.contrib.exchange.models import Rate, convert_money from djmoney.money import Money @@ -40,6 +42,147 @@ from .tasks import offload_task from .validators import validate_overage +class HostTest(InvenTreeTestCase): + """Test for host configuration.""" + + @override_settings(ALLOWED_HOSTS=['testserver']) + def test_allowed_hosts(self): + """Test that the ALLOWED_HOSTS functions as expected.""" + self.assertIn('testserver', settings.ALLOWED_HOSTS) + + response = self.client.get('/api/', headers={'host': 'testserver'}) + + self.assertEqual(response.status_code, 200) + + response = self.client.get('/api/', headers={'host': 'invalidserver'}) + + self.assertEqual(response.status_code, 400) + + @override_settings(ALLOWED_HOSTS=['invalidserver.co.uk']) + def test_allowed_hosts_2(self): + """Another test for ALLOWED_HOSTS functionality.""" + response = self.client.get('/api/', headers={'host': 'invalidserver.co.uk'}) + + self.assertEqual(response.status_code, 200) + + +class CorsTest(TestCase): + """Unit tests for CORS functionality.""" + + def cors_headers(self): + """Return a list of CORS headers.""" + return [ + 'access-control-allow-origin', + 'access-control-allow-credentials', + 'access-control-allow-methods', + 'access-control-allow-headers', + ] + + def preflight(self, url, origin, method='GET'): + """Make a CORS preflight request to the specified URL.""" + headers = {'origin': origin, 'access-control-request-method': method} + + return self.client.options(url, headers=headers) + + def test_no_origin(self): + """Test that CORS headers are not included for regular requests. + + - We use the /api/ endpoint for this test (it does not require auth) + - By default, in debug mode *all* CORS origins are allowed + """ + # Perform an initial response without the "origin" header + response = self.client.get('/api/') + self.assertEqual(response.status_code, 200) + + for header in self.cors_headers(): + self.assertNotIn(header, response.headers) + + # Now, perform a "preflight" request with the "origin" header + response = self.preflight('/api/', origin='http://random-external-server.com') + self.assertEqual(response.status_code, 200) + + for header in self.cors_headers(): + self.assertIn(header, response.headers) + + self.assertEqual(response.headers['content-length'], '0') + self.assertEqual( + response.headers['access-control-allow-origin'], + 'http://random-external-server.com', + ) + + @override_settings( + CORS_ALLOW_ALL_ORIGINS=False, + CORS_ALLOWED_ORIGINS=['http://my-external-server.com'], + CORS_ALLOWED_ORIGIN_REGEXES=[], + ) + def test_auth_view(self): + """Test that CORS requests work for the /auth/ view. + + Here, we are not authorized by default, + but the CORS headers should still be included. + """ + url = '/auth/' + + # First, a preflight request with a "valid" origin + + response = self.preflight(url, origin='http://my-external-server.com') + + self.assertEqual(response.status_code, 200) + + for header in self.cors_headers(): + self.assertIn(header, response.headers) + + # Next, a preflight request with an "invalid" origin + response = self.preflight(url, origin='http://random-external-server.com') + + self.assertEqual(response.status_code, 200) + + for header in self.cors_headers(): + self.assertNotIn(header, response.headers) + + # Next, make a GET request (without a token) + response = self.client.get( + url, headers={'origin': 'http://my-external-server.com'} + ) + + # Unauthorized + self.assertEqual(response.status_code, 401) + + self.assertIn('access-control-allow-origin', response.headers) + self.assertNotIn('access-control-allow-methods', response.headers) + + @override_settings( + CORS_ALLOW_ALL_ORIGINS=False, + CORS_ALLOWED_ORIGINS=[], + CORS_ALLOWED_ORIGIN_REGEXES=['http://.*myserver.com'], + ) + def test_cors_regex(self): + """Test that CORS regexes work as expected.""" + valid_urls = [ + 'http://www.myserver.com', + 'http://test.myserver.com', + 'http://myserver.com', + 'http://www.myserver.com:8080', + ] + + invalid_urls = [ + 'http://myserver.org', + 'http://www.other-server.org', + 'http://google.com', + 'http://myserver.co.uk:8080', + ] + + for url in valid_urls: + response = self.preflight('/api/', origin=url) + self.assertEqual(response.status_code, 200) + self.assertIn('access-control-allow-origin', response.headers) + + for url in invalid_urls: + response = self.preflight('/api/', origin=url) + self.assertEqual(response.status_code, 200) + self.assertNotIn('access-control-allow-origin', response.headers) + + class ConversionTest(TestCase): """Tests for conversion of physical units.""" @@ -138,6 +281,24 @@ class ConversionTest(TestCase): q = InvenTree.conversion.convert_physical_value(val, 'W', strip_units=False) self.assertAlmostEqual(float(q.magnitude), expected, places=2) + def test_imperial_lengths(self): + """Test support of imperial length measurements.""" + tests = [ + ('1 inch', 'mm', 25.4), + ('1 "', 'mm', 25.4), + ('2 "', 'inches', 2), + ('3 feet', 'inches', 36), + ("3'", 'inches', 36), + ("7 '", 'feet', 7), + ] + + for val, unit, expected in tests: + output = InvenTree.conversion.convert_physical_value( + val, unit, strip_units=True + ) + + self.assertAlmostEqual(output, expected, 3) + def test_dimensionless_units(self): """Tests for 'dimensionless' unit quantities.""" # Test some dimensionless units @@ -413,6 +574,7 @@ class FormatTest(TestCase): class TestHelpers(TestCase): """Tests for InvenTree helper functions.""" + @override_settings(SITE_URL=None) def test_absolute_url(self): """Test helper function for generating an absolute URL.""" base = 'https://demo.inventree.org:12345' @@ -587,6 +749,47 @@ class TestHelpers(TestCase): self.assertEqual(helpers.generateTestKey(name), key) +class TestTimeFormat(TestCase): + """Unit test for time formatting functionality.""" + + @override_settings(TIME_ZONE='UTC') + def test_tz_utc(self): + """Check UTC timezone.""" + self.assertEqual(InvenTree.helpers.server_timezone(), 'UTC') + + @override_settings(TIME_ZONE='Europe/London') + def test_tz_london(self): + """Check London timezone.""" + self.assertEqual(InvenTree.helpers.server_timezone(), 'Europe/London') + + @override_settings(TIME_ZONE='Australia/Sydney') + def test_to_local_time(self): + """Test that the local time conversion works as expected.""" + source_time = timezone.datetime( + year=2000, + month=1, + day=1, + hour=0, + minute=0, + second=0, + tzinfo=pytz.timezone('Europe/London'), + ) + + tests = [ + ('UTC', '2000-01-01 00:01:00+00:00'), + ('Europe/London', '2000-01-01 00:00:00-00:01'), + ('America/New_York', '1999-12-31 19:01:00-05:00'), + # All following tests should result in the same value + ('Australia/Sydney', '2000-01-01 11:01:00+11:00'), + (None, '2000-01-01 11:01:00+11:00'), + ('', '2000-01-01 11:01:00+11:00'), + ] + + for tz, expected in tests: + local_time = InvenTree.helpers.to_local_time(source_time, tz) + self.assertEqual(str(local_time), expected) + + class TestQuoteWrap(TestCase): """Tests for string wrapping.""" @@ -894,6 +1097,7 @@ class TestVersionNumber(TestCase): hash = str( subprocess.check_output('git rev-parse --short HEAD'.split()), 'utf-8' ).strip() + self.assertEqual(hash, version.inventreeCommitHash()) d = ( @@ -1144,6 +1348,7 @@ class TestInstanceName(InvenTreeTestCase): site_obj = Site.objects.all().order_by('id').first() self.assertEqual(site_obj.name, 'Testing title') + @override_settings(SITE_URL=None) def test_instance_url(self): """Test instance url settings.""" # Set up required setting diff --git a/InvenTree/InvenTree/version.py b/InvenTree/InvenTree/version.py index bd84bd7d7c..ef7e6c69b7 100644 --- a/InvenTree/InvenTree/version.py +++ b/InvenTree/InvenTree/version.py @@ -19,7 +19,7 @@ from dulwich.repo import NotGitRepository, Repo from .api_version import INVENTREE_API_TEXT, INVENTREE_API_VERSION # InvenTree software version -INVENTREE_SW_VERSION = '0.14.0 dev' +INVENTREE_SW_VERSION = '0.15.0 dev' # Discover git try: diff --git a/InvenTree/build/models.py b/InvenTree/build/models.py index ca3b202317..9890c1dd22 100644 --- a/InvenTree/build/models.py +++ b/InvenTree/build/models.py @@ -74,7 +74,7 @@ class Build(InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models.InvenTreeNo verbose_name = _("Build Order") verbose_name_plural = _("Build Orders") - OVERDUE_FILTER = Q(status__in=BuildStatusGroups.ACTIVE_CODES) & ~Q(target_date=None) & Q(target_date__lte=datetime.now().date()) + OVERDUE_FILTER = Q(status__in=BuildStatusGroups.ACTIVE_CODES) & ~Q(target_date=None) & Q(target_date__lte=InvenTree.helpers.current_date()) # Global setting for specifying reference pattern REFERENCE_PATTERN_SETTING = 'BUILDORDER_REFERENCE_PATTERN' @@ -121,6 +121,12 @@ class Build(InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models.InvenTreeNo super().clean() + if common.models.InvenTreeSetting.get_setting('BUILDORDER_REQUIRE_RESPONSIBLE'): + if not self.responsible: + raise ValidationError({ + 'responsible': _('Responsible user or group must be specified') + }) + # Prevent changing target part after creation if self.has_field_changed('part'): raise ValidationError({ @@ -519,16 +525,11 @@ class Build(InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models.InvenTreeNo return True @transaction.atomic - def complete_build(self, user): - """Mark this build as complete.""" - if self.incomplete_count > 0: - return - - self.completion_date = datetime.now().date() - self.completed_by = user - self.status = BuildStatus.COMPLETE.value - self.save() + def complete_allocations(self, user): + """Complete all stock allocations for this build order. + - This function is called when a build order is completed + """ # Remove untracked allocated stock self.subtract_allocated_stock(user) @@ -536,6 +537,27 @@ class Build(InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models.InvenTreeNo # which point to this Build Order self.allocated_stock.delete() + @transaction.atomic + def complete_build(self, user): + """Mark this build as complete.""" + + import build.tasks + + if self.incomplete_count > 0: + return + + self.completion_date = InvenTree.helpers.current_date() + self.completed_by = user + self.status = BuildStatus.COMPLETE.value + self.save() + + # Offload task to complete build allocations + InvenTree.tasks.offload_task( + build.tasks.complete_build_allocations, + self.pk, + user.pk if user else None + ) + # Register an event trigger_event('build.completed', id=self.pk) @@ -606,7 +628,7 @@ class Build(InvenTree.models.InvenTreeBarcodeMixin, InvenTree.models.InvenTreeNo output.delete() # Date of 'completion' is the date the build was cancelled - self.completion_date = datetime.now().date() + self.completion_date = InvenTree.helpers.current_date() self.completed_by = user self.status = BuildStatus.CANCELLED.value diff --git a/InvenTree/build/tasks.py b/InvenTree/build/tasks.py index 46fd97cab4..9464930ccd 100644 --- a/InvenTree/build/tasks.py +++ b/InvenTree/build/tasks.py @@ -1,9 +1,10 @@ """Background task definitions for the BuildOrder app""" -from datetime import datetime, timedelta +from datetime import timedelta from decimal import Decimal import logging +from django.contrib.auth.models import User from django.utils.translation import gettext_lazy as _ from django.template.loader import render_to_string @@ -13,6 +14,7 @@ from plugin.events import trigger_event import common.notifications import build.models import InvenTree.email +import InvenTree.helpers import InvenTree.helpers_model import InvenTree.tasks from InvenTree.status_codes import BuildStatusGroups @@ -24,6 +26,27 @@ import part.models as part_models logger = logging.getLogger('inventree') +def complete_build_allocations(build_id: int, user_id: int): + """Complete build allocations for a specified BuildOrder.""" + + build_order = build.models.Build.objects.filter(pk=build_id).first() + + if user_id: + try: + user = User.objects.get(pk=user_id) + except User.DoesNotExist: + logger.warning("Could not complete build allocations for BuildOrder <%s> - User does not exist", build_id) + return + else: + user = None + + if not build_order: + logger.warning("Could not complete build allocations for BuildOrder <%s> - BuildOrder does not exist", build_id) + return + + build_order.complete_allocations(user) + + def update_build_order_lines(bom_item_pk: int): """Update all BuildOrderLineItem objects which reference a particular BomItem. @@ -200,7 +223,7 @@ def check_overdue_build_orders(): - Look at the 'target_date' of any outstanding BuildOrder objects - If the 'target_date' expired *yesterday* then the order is just out of date """ - yesterday = datetime.now().date() - timedelta(days=1) + yesterday = InvenTree.helpers.current_date() - timedelta(days=1) overdue_orders = build.models.Build.objects.filter( target_date=yesterday, diff --git a/InvenTree/common/api.py b/InvenTree/common/api.py index 13a8bc19f8..f3e5066bde 100644 --- a/InvenTree/common/api.py +++ b/InvenTree/common/api.py @@ -148,7 +148,7 @@ class CurrencyExchangeView(APIView): response = { 'base_currency': common.models.InvenTreeSetting.get_setting( - 'INVENTREE_DEFAULT_CURRENCY', 'USD' + 'INVENTREE_DEFAULT_CURRENCY', backup_value='USD' ), 'exchange_rates': {}, 'updated': updated, diff --git a/InvenTree/common/models.py b/InvenTree/common/models.py index 9ca83c361a..405427c16d 100644 --- a/InvenTree/common/models.py +++ b/InvenTree/common/models.py @@ -13,7 +13,7 @@ import math import os import re import uuid -from datetime import datetime, timedelta, timezone +from datetime import timedelta, timezone from enum import Enum from secrets import compare_digest from typing import Any, Callable, TypedDict, Union @@ -190,6 +190,8 @@ class BaseInvenTreeSetting(models.Model): SETTINGS: dict[str, SettingsKeyType] = {} + CHECK_SETTING_KEY = False + extra_unique_fields: list[str] = [] class Meta: @@ -226,9 +228,12 @@ class BaseInvenTreeSetting(models.Model): """ cache_key = f'BUILD_DEFAULT_VALUES:{str(cls.__name__)}' - if InvenTree.helpers.str2bool(cache.get(cache_key, False)): - # Already built default values - return + try: + if InvenTree.helpers.str2bool(cache.get(cache_key, False)): + # Already built default values + return + except Exception: + pass try: existing_keys = cls.objects.filter(**kwargs).values_list('key', flat=True) @@ -251,7 +256,10 @@ class BaseInvenTreeSetting(models.Model): ) pass - cache.set(cache_key, True, timeout=3600) + try: + cache.set(cache_key, True, timeout=3600) + except Exception: + pass def _call_settings_function(self, reference: str, args, kwargs): """Call a function associated with a particular setting. @@ -280,18 +288,17 @@ class BaseInvenTreeSetting(models.Model): def save_to_cache(self): """Save this setting object to cache.""" - ckey = self.cache_key + key = self.cache_key # skip saving to cache if no pk is set if self.pk is None: return - logger.debug("Saving setting '%s' to cache", ckey) + logger.debug("Saving setting '%s' to cache", key) try: - cache.set(ckey, self, timeout=3600) - except TypeError: - # Some characters cause issues with caching; ignore and move on + cache.set(key, self, timeout=3600) + except Exception: pass @classmethod @@ -554,28 +561,30 @@ class BaseInvenTreeSetting(models.Model): # 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', False) + # Prevent saving to the database during data import if InvenTree.ready.isImportingData(): create = False + do_cache = False # Prevent saving to the database during migrations if InvenTree.ready.isRunningMigrations(): create = False + do_cache = False - # Perform cache lookup by default - do_cache = kwargs.pop('cache', True) - - ckey = cls.create_cache_key(key, **kwargs) + cache_key = cls.create_cache_key(key, **kwargs) if do_cache: try: # First attempt to find the setting object in the cache - cached_setting = cache.get(ckey) + cached_setting = cache.get(cache_key) if cached_setting is not None: return cached_setting - except AppRegistryNotReady: + except Exception: # Cache is not ready yet do_cache = False @@ -628,6 +637,17 @@ class BaseInvenTreeSetting(models.Model): If it does not exist, return the backup value (default = None) """ + if ( + cls.CHECK_SETTING_KEY + and key not in cls.SETTINGS + and not key.startswith('_') + ): + logger.warning( + "get_setting: Setting key '%s' is not defined for class %s", + key, + str(cls), + ) + # If no backup value is specified, attempt to retrieve a "default" value if backup_value is None: backup_value = cls.get_setting_default(key, **kwargs) @@ -663,6 +683,17 @@ class BaseInvenTreeSetting(models.Model): change_user: User object (must be staff member to update a core setting) create: If True, create a new setting if the specified key does not exist. """ + if ( + cls.CHECK_SETTING_KEY + and key not in cls.SETTINGS + and not key.startswith('_') + ): + logger.warning( + "set_setting: Setting key '%s' is not defined for class %s", + key, + str(cls), + ) + if change_user is not None and not change_user.is_staff: return @@ -1192,6 +1223,8 @@ class InvenTreeSetting(BaseInvenTreeSetting): SETTINGS: dict[str, InvenTreeSettingsKeyType] + CHECK_SETTING_KEY = True + class Meta: """Meta options for InvenTreeSetting.""" @@ -1646,6 +1679,12 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'default': False, 'validator': bool, }, + 'REPORT_LOG_ERRORS': { + 'name': _('Log Report Errors'), + 'description': _('Log errors which occur when generating reports'), + 'default': False, + 'validator': bool, + }, 'REPORT_DEFAULT_PAGE_SIZE': { 'name': _('Page Size'), 'description': _('Default page size for PDF reports'), @@ -1681,7 +1720,7 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'STOCK_DELETE_DEPLETED_DEFAULT': { 'name': _('Delete Depleted Stock'), 'description': _( - 'Determines default behaviour when a stock item is depleted' + 'Determines default behavior when a stock item is depleted' ), 'default': True, 'validator': bool, @@ -1737,6 +1776,14 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'default': False, 'validator': bool, }, + 'STOCK_ENFORCE_BOM_INSTALLATION': { + 'name': _('Check BOM when installing items'), + 'description': _( + 'Installed stock items must exist in the BOM for the parent part' + ), + 'default': True, + 'validator': bool, + }, 'BUILDORDER_REFERENCE_PATTERN': { 'name': _('Build Order Reference Pattern'), 'description': _( @@ -1745,6 +1792,20 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'default': 'BO-{ref:04d}', 'validator': build.validators.validate_build_order_reference_pattern, }, + 'BUILDORDER_REQUIRE_RESPONSIBLE': { + 'name': _('Require Responsible Owner'), + 'description': _('A responsible owner must be assigned to each order'), + 'default': False, + 'validator': bool, + }, + 'PREVENT_BUILD_COMPLETION_HAVING_INCOMPLETED_TESTS': { + 'name': _('Block Until Tests Pass'), + 'description': _( + 'Prevent build outputs from being completed until all required tests pass' + ), + 'default': False, + 'validator': bool, + }, 'RETURNORDER_ENABLED': { 'name': _('Enable Return Orders'), 'description': _('Enable return order functionality in the user interface'), @@ -1759,6 +1820,12 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'default': 'RMA-{ref:04d}', 'validator': order.validators.validate_return_order_reference_pattern, }, + 'RETURNORDER_REQUIRE_RESPONSIBLE': { + 'name': _('Require Responsible Owner'), + 'description': _('A responsible owner must be assigned to each order'), + 'default': False, + 'validator': bool, + }, 'RETURNORDER_EDIT_COMPLETED_ORDERS': { 'name': _('Edit Completed Return Orders'), 'description': _( @@ -1775,6 +1842,12 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'default': 'SO-{ref:04d}', 'validator': order.validators.validate_sales_order_reference_pattern, }, + 'SALESORDER_REQUIRE_RESPONSIBLE': { + 'name': _('Require Responsible Owner'), + 'description': _('A responsible owner must be assigned to each order'), + 'default': False, + 'validator': bool, + }, 'SALESORDER_DEFAULT_SHIPMENT': { 'name': _('Sales Order Default Shipment'), 'description': _('Enable creation of default shipment with sales orders'), @@ -1797,6 +1870,12 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'default': 'PO-{ref:04d}', 'validator': order.validators.validate_purchase_order_reference_pattern, }, + 'PURCHASEORDER_REQUIRE_RESPONSIBLE': { + 'name': _('Require Responsible Owner'), + 'description': _('A responsible owner must be assigned to each order'), + 'default': False, + 'validator': bool, + }, 'PURCHASEORDER_EDIT_COMPLETED_ORDERS': { 'name': _('Edit Completed Purchase Orders'), 'description': _( @@ -1983,11 +2062,9 @@ class InvenTreeSetting(BaseInvenTreeSetting): 'default': False, 'validator': bool, }, - 'PREVENT_BUILD_COMPLETION_HAVING_INCOMPLETED_TESTS': { - 'name': _('Block Until Tests Pass'), - 'description': _( - 'Prevent build outputs from being completed until all required tests pass' - ), + 'TEST_STATION_DATA': { + 'name': _('Enable Test Station Data'), + 'description': _('Enable test station data collection for test results'), 'default': False, 'validator': bool, }, @@ -2027,7 +2104,9 @@ def label_printer_options(): class InvenTreeUserSetting(BaseInvenTreeSetting): - """An InvenTreeSetting object with a usercontext.""" + """An InvenTreeSetting object with a user context.""" + + CHECK_SETTING_KEY = True class Meta: """Meta options for InvenTreeUserSetting.""" @@ -2066,7 +2145,7 @@ class InvenTreeUserSetting(BaseInvenTreeSetting): 'validator': bool, }, 'HOMEPAGE_BOM_REQUIRES_VALIDATION': { - 'name': _('Show unvalidated BOMs'), + 'name': _('Show invalid BOMs'), 'description': _('Show BOMs that await validation on the homepage'), 'default': False, 'validator': bool, @@ -2379,6 +2458,14 @@ class InvenTreeUserSetting(BaseInvenTreeSetting): 'validator': [int], 'default': '', }, + 'DEFAULT_LINE_LABEL_TEMPLATE': { + 'name': _('Default build line label template'), + 'description': _( + 'The build line label template to be automatically selected' + ), + 'validator': [int], + 'default': '', + }, 'NOTIFICATION_ERROR_REPORT': { 'name': _('Receive error reports'), 'description': _('Receive notifications for system errors'), @@ -2589,7 +2676,7 @@ class VerificationMethod(Enum): class WebhookEndpoint(models.Model): - """Defines a Webhook entdpoint. + """Defines a Webhook endpoint. Attributes: endpoint_id: Path to the webhook, @@ -2828,7 +2915,7 @@ class NotificationEntry(MetaMixin): @classmethod def check_recent(cls, key: str, uid: int, delta: timedelta): """Test if a particular notification has been sent in the specified time period.""" - since = datetime.now().date() - delta + since = InvenTree.helpers.current_date() - delta entries = cls.objects.filter(key=key, uid=uid, updated__gte=since) @@ -2924,7 +3011,7 @@ class NewsFeedEntry(models.Model): - published: Date of publishing of the news item - author: Author of news item - summary: Summary of the news items content - - read: Was this iteam already by a superuser? + - read: Was this item already by a superuser? """ feed_id = models.CharField(verbose_name=_('Id'), unique=True, max_length=250) diff --git a/InvenTree/common/serializers.py b/InvenTree/common/serializers.py index c9508dd2d9..360794d8a5 100644 --- a/InvenTree/common/serializers.py +++ b/InvenTree/common/serializers.py @@ -63,7 +63,7 @@ class SettingsSerializer(InvenTreeModelSerializer): typ = serializers.CharField(read_only=True) - def get_choices(self, obj): + def get_choices(self, obj) -> list: """Returns the choices available for a given item.""" results = [] diff --git a/InvenTree/common/settings.py b/InvenTree/common/settings.py index 03601ad1f8..3380def996 100644 --- a/InvenTree/common/settings.py +++ b/InvenTree/common/settings.py @@ -14,7 +14,10 @@ def currency_code_default(): """Returns the default currency code (or USD if not specified).""" from common.models import InvenTreeSetting - cached_value = cache.get('currency_code_default', '') + try: + cached_value = cache.get('currency_code_default', '') + except Exception: + cached_value = None if cached_value: return cached_value @@ -31,7 +34,10 @@ def currency_code_default(): code = 'USD' # pragma: no cover # Cache the value for a short amount of time - cache.set('currency_code_default', code, 30) + try: + cache.set('currency_code_default', code, 30) + except Exception: + pass return code diff --git a/InvenTree/common/tasks.py b/InvenTree/common/tasks.py index 04353ec613..92a666cfe7 100644 --- a/InvenTree/common/tasks.py +++ b/InvenTree/common/tasks.py @@ -2,7 +2,7 @@ import logging import os -from datetime import datetime, timedelta +from datetime import timedelta from django.conf import settings from django.core.exceptions import AppRegistryNotReady @@ -12,6 +12,7 @@ from django.utils import timezone import feedparser import requests +import InvenTree.helpers from InvenTree.helpers_model import getModelsWithMixin from InvenTree.models import InvenTreeNotesMixin from InvenTree.tasks import ScheduledTask, scheduled_task @@ -107,7 +108,7 @@ def delete_old_notes_images(): note.delete() note_classes = getModelsWithMixin(InvenTreeNotesMixin) - before = datetime.now() - timedelta(days=90) + before = InvenTree.helpers.current_date() - timedelta(days=90) for note in NotesImage.objects.filter(date__lte=before): # Find any images which are no longer referenced by a note diff --git a/InvenTree/common/tests.py b/InvenTree/common/tests.py index 49c02dd47b..744237ba5b 100644 --- a/InvenTree/common/tests.py +++ b/InvenTree/common/tests.py @@ -12,6 +12,7 @@ from django.core.cache import cache from django.core.exceptions import ValidationError from django.core.files.uploadedfile import SimpleUploadedFile from django.test import Client, TestCase +from django.test.utils import override_settings from django.urls import reverse import PIL @@ -271,6 +272,7 @@ class SettingsTest(InvenTreeTestCase): print(f"run_settings_check failed for user setting '{key}'") raise exc + @override_settings(SITE_URL=None) def test_defaults(self): """Populate the settings with default values.""" for key in InvenTreeSetting.SETTINGS.keys(): diff --git a/InvenTree/company/api.py b/InvenTree/company/api.py index 246fc75fe8..8a0b839064 100644 --- a/InvenTree/company/api.py +++ b/InvenTree/company/api.py @@ -82,7 +82,7 @@ class CompanyDetail(RetrieveUpdateDestroyAPI): class CompanyAttachmentList(AttachmentMixin, ListCreateDestroyAPIView): - """API endpoint for the CompanyAttachment model.""" + """API endpoint for listing, creating and bulk deleting a CompanyAttachment.""" queryset = CompanyAttachment.objects.all() serializer_class = CompanyAttachmentSerializer @@ -215,7 +215,7 @@ class ManufacturerPartDetail(RetrieveUpdateDestroyAPI): class ManufacturerPartAttachmentList(AttachmentMixin, ListCreateDestroyAPIView): - """API endpoint for listing (and creating) a ManufacturerPartAttachment (file upload).""" + """API endpoint for listing, creating and bulk deleting a ManufacturerPartAttachment (file upload).""" queryset = ManufacturerPartAttachment.objects.all() serializer_class = ManufacturerPartAttachmentSerializer diff --git a/InvenTree/company/models.py b/InvenTree/company/models.py index f8cdedcc8b..dc21dc62b1 100644 --- a/InvenTree/company/models.py +++ b/InvenTree/company/models.py @@ -901,7 +901,7 @@ class SupplierPart( def update_available_quantity(self, quantity): """Update the available quantity for this SupplierPart.""" self.available = quantity - self.availability_updated = datetime.now() + self.availability_updated = InvenTree.helpers.current_time() self.save() @property diff --git a/InvenTree/company/serializers.py b/InvenTree/company/serializers.py index ad6202e83a..f94333aca8 100644 --- a/InvenTree/company/serializers.py +++ b/InvenTree/company/serializers.py @@ -42,11 +42,13 @@ class CompanyBriefSerializer(InvenTreeModelSerializer): """Metaclass options.""" model = Company - fields = ['pk', 'url', 'name', 'description', 'image'] + fields = ['pk', 'url', 'name', 'description', 'image', 'thumbnail'] url = serializers.CharField(source='get_absolute_url', read_only=True) - image = serializers.CharField(source='get_thumbnail_url', read_only=True) + image = InvenTreeImageSerializerField(read_only=True) + + thumbnail = serializers.CharField(source='get_thumbnail_url', read_only=True) class AddressSerializer(InvenTreeModelSerializer): diff --git a/InvenTree/config_template.yaml b/InvenTree/config_template.yaml index 931c135d1e..e429aa2bea 100644 --- a/InvenTree/config_template.yaml +++ b/InvenTree/config_template.yaml @@ -168,9 +168,9 @@ allowed_hosts: # Trusted origins (see CSRF_TRUSTED_ORIGINS in Django settings documentation) # If you are running behind a proxy, you may need to add the proxy address here -trusted_origins: - - 'http://localhost:8000' - +# trusted_origins: +# - 'http://localhost' +# - 'http://*.localhost' # Proxy forwarding settings # If InvenTree is running behind a proxy, you may need to configure these settings @@ -183,24 +183,23 @@ use_x_forwarded_port: false # Cross Origin Resource Sharing (CORS) settings (see https://github.com/adamchainz/django-cors-headers) cors: - allow_all: True - allow_credentials: True, + allow_all: true + allow_credentials: true # whitelist: # - https://example.com # - https://sub.example.com + # regex: + # MEDIA_ROOT is the local filesystem location for storing uploaded files #media_root: '/home/inventree/data/media' # STATIC_ROOT is the local filesystem location for storing static files #static_root: '/home/inventree/data/static' -### Backup configuration options ### # INVENTREE_BACKUP_DIR is the local filesystem location for storing backups -backup_storage: django.core.files.storage.FileSystemStorage #backup_dir: '/home/inventree/data/backup' -#backup_options: # Background worker options background: diff --git a/InvenTree/generic/templating/apps.py b/InvenTree/generic/templating/apps.py index 893ae4d5a3..1fde7e47e9 100644 --- a/InvenTree/generic/templating/apps.py +++ b/InvenTree/generic/templating/apps.py @@ -1,11 +1,9 @@ """Shared templating code.""" import logging -import os import warnings from pathlib import Path -from django.conf import settings from django.core.exceptions import AppRegistryNotReady from django.core.files.storage import default_storage from django.db.utils import IntegrityError, OperationalError, ProgrammingError @@ -18,9 +16,6 @@ from InvenTree.config import ensure_dir logger = logging.getLogger('inventree') -MEDIA_STORAGE_DIR = Path(settings.MEDIA_ROOT) - - class TemplatingMixin: """Mixin that contains shared templating code.""" @@ -84,8 +79,7 @@ class TemplatingMixin: # Create root dir for templates src_dir = self.get_src_dir(ref_name) - dst_dir = MEDIA_STORAGE_DIR.joinpath(self.name, 'inventree', ref_name) - ensure_dir(dst_dir, default_storage) + ensure_dir(Path(self.name, 'inventree', ref_name), default_storage) # Copy each template across (if required) for entry in data: @@ -94,29 +88,27 @@ class TemplatingMixin: def create_template_file(self, model, src_dir, data, ref_name): """Ensure a label template is in place.""" # Destination filename - filename = os.path.join(self.name, 'inventree', ref_name, data['file']) - + filename = Path(self.name, 'inventree', ref_name, data['file']) src_file = src_dir.joinpath(data['file']) - dst_file = MEDIA_STORAGE_DIR.joinpath(filename) do_copy = False - if not dst_file.exists(): + if not default_storage.exists(filename): logger.info("%s template '%s' is not present", self.name, filename) do_copy = True else: # Check if the file contents are different src_hash = InvenTree.helpers.hash_file(src_file) - dst_hash = InvenTree.helpers.hash_file(dst_file) + dst_hash = InvenTree.helpers.hash_file(filename, default_storage) if src_hash != dst_hash: logger.info("Hash differs for '%s'", filename) do_copy = True if do_copy: - logger.info("Copying %s template '%s'", self.name, dst_file) + logger.info("Copying %s template '%s'", self.name, filename) # Ensure destination dir exists - dst_file.parent.mkdir(parents=True, exist_ok=True) + ensure_dir(filename.parent, default_storage) # Copy file default_storage.save(filename, src_file.open('rb')) @@ -135,6 +127,8 @@ class TemplatingMixin: logger.info("Creating entry for %s '%s'", model, data.get('name')) try: - model.objects.create(**self.get_new_obj_data(data, filename)) - except Exception: - logger.warning("Failed to create %s '%s'", self.name, data['name']) + model.objects.create(**self.get_new_obj_data(data, str(filename))) + except Exception as _e: + logger.warning( + "Failed to create %s '%s' with error '%s'", self.name, data['name'], _e + ) diff --git a/InvenTree/label/models.py b/InvenTree/label/models.py index a472bedd7b..17cc252afb 100644 --- a/InvenTree/label/models.py +++ b/InvenTree/label/models.py @@ -1,6 +1,5 @@ """Label printing models.""" -import datetime import logging import os import sys @@ -15,6 +14,7 @@ from django.urls import reverse from django.utils.translation import gettext_lazy as _ import build.models +import InvenTree.helpers import InvenTree.models import part.models import stock.models @@ -228,8 +228,8 @@ class LabelTemplate(InvenTree.models.InvenTreeMetadataModel): # Add "basic" context data which gets passed to every label context['base_url'] = get_base_url(request=request) - context['date'] = datetime.datetime.now().date() - context['datetime'] = datetime.datetime.now() + context['date'] = InvenTree.helpers.current_date() + context['datetime'] = InvenTree.helpers.current_time() context['request'] = request context['user'] = request.user context['width'] = self.width diff --git a/InvenTree/label/serializers.py b/InvenTree/label/serializers.py index a38f4bb3ac..ef1f467937 100644 --- a/InvenTree/label/serializers.py +++ b/InvenTree/label/serializers.py @@ -15,7 +15,16 @@ class LabelSerializerBase(InvenTreeModelSerializer): @staticmethod def label_fields(): """Generic serializer fields for a label template.""" - return ['pk', 'name', 'description', 'label', 'filters', 'enabled'] + return [ + 'pk', + 'name', + 'description', + 'label', + 'filters', + 'width', + 'height', + 'enabled', + ] class StockItemLabelSerializer(LabelSerializerBase): diff --git a/InvenTree/locale/bg/LC_MESSAGES/django.po b/InvenTree/locale/bg/LC_MESSAGES/django.po index ef16d558bb..0f18296142 100644 --- a/InvenTree/locale/bg/LC_MESSAGES/django.po +++ b/InvenTree/locale/bg/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 04:05+0000\n" -"PO-Revision-Date: 2024-02-28 07:23\n" +"POT-Creation-Date: 2024-03-19 01:26+0000\n" +"PO-Revision-Date: 2024-03-19 11:51\n" "Last-Translator: \n" "Language-Team: Bulgarian\n" "Language: bg_BG\n" @@ -30,20 +30,20 @@ msgstr "Потребителя няма нужното разрешение, з msgid "Invalid unit provided ({unit})" msgstr "" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "Не е зададена стойност" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "Преобразуването на {original} в {unit} не беше успешно" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" msgstr "Зададено е недопустимо количество" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" msgstr "Зададено е недопустимо количество ({exc})" @@ -64,18 +64,18 @@ msgstr "Въведи дата" #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 #: templates/js/translated/return_order.js:776 #: templates/js/translated/sales_order.js:1067 #: templates/js/translated/sales_order.js:1982 -#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 msgid "Notes" msgstr "Бележки" @@ -132,42 +132,42 @@ msgstr "Въведеният домейн на електронната поща msgid "Registration is disabled." msgstr "Регистрацията е деактивирана." -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "Въведена е недопустима стойност" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "Липсва сериен номер" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "Повтарящ се сериен номер" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "Невалиден диапазон от групи: {group}" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "Не са открити серийни номера" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "Премахнете HTML маркерите от тази стойност" @@ -203,131 +203,135 @@ msgstr "Отдалеченият сървър върна празен отгов msgid "Supplied URL is not a valid image file" msgstr "" -#: InvenTree/locales.py:16 +#: InvenTree/locales.py:18 msgid "Bulgarian" msgstr "" -#: InvenTree/locales.py:17 +#: InvenTree/locales.py:19 msgid "Czech" msgstr "" -#: InvenTree/locales.py:18 +#: InvenTree/locales.py:20 msgid "Danish" msgstr "" -#: InvenTree/locales.py:19 +#: InvenTree/locales.py:21 msgid "German" msgstr "" -#: InvenTree/locales.py:20 +#: InvenTree/locales.py:22 msgid "Greek" msgstr "" -#: InvenTree/locales.py:21 +#: InvenTree/locales.py:23 msgid "English" msgstr "" -#: InvenTree/locales.py:22 +#: InvenTree/locales.py:24 msgid "Spanish" msgstr "" -#: InvenTree/locales.py:23 +#: InvenTree/locales.py:25 msgid "Spanish (Mexican)" msgstr "" -#: InvenTree/locales.py:24 +#: InvenTree/locales.py:26 msgid "Farsi / Persian" msgstr "" -#: InvenTree/locales.py:25 +#: InvenTree/locales.py:27 msgid "Finnish" msgstr "" -#: InvenTree/locales.py:26 +#: InvenTree/locales.py:28 msgid "French" msgstr "" -#: InvenTree/locales.py:27 +#: InvenTree/locales.py:29 msgid "Hebrew" msgstr "" -#: InvenTree/locales.py:28 +#: InvenTree/locales.py:30 msgid "Hindi" msgstr "Хинди" -#: InvenTree/locales.py:29 +#: InvenTree/locales.py:31 msgid "Hungarian" msgstr "Унгарски" -#: InvenTree/locales.py:30 +#: InvenTree/locales.py:32 msgid "Italian" msgstr "Италиански" -#: InvenTree/locales.py:31 +#: InvenTree/locales.py:33 msgid "Japanese" msgstr "Японски" -#: InvenTree/locales.py:32 +#: InvenTree/locales.py:34 msgid "Korean" msgstr "Корейски" -#: InvenTree/locales.py:33 +#: InvenTree/locales.py:35 +msgid "Latvian" +msgstr "" + +#: InvenTree/locales.py:36 msgid "Dutch" msgstr "Нидерландски" -#: InvenTree/locales.py:34 +#: InvenTree/locales.py:37 msgid "Norwegian" msgstr "Норвежки" -#: InvenTree/locales.py:35 +#: InvenTree/locales.py:38 msgid "Polish" msgstr "Полски" -#: InvenTree/locales.py:36 +#: InvenTree/locales.py:39 msgid "Portuguese" msgstr "Португалски" -#: InvenTree/locales.py:37 +#: InvenTree/locales.py:40 msgid "Portuguese (Brazilian)" msgstr "Португалски (Бразилия)" -#: InvenTree/locales.py:38 +#: InvenTree/locales.py:41 msgid "Russian" msgstr "Руски" -#: InvenTree/locales.py:39 +#: InvenTree/locales.py:42 msgid "Slovak" msgstr "" -#: InvenTree/locales.py:40 +#: InvenTree/locales.py:43 msgid "Slovenian" msgstr "Словенски" -#: InvenTree/locales.py:41 +#: InvenTree/locales.py:44 msgid "Serbian" msgstr "" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:45 msgid "Swedish" msgstr "Шведски" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:46 msgid "Thai" msgstr "Тайландски" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:47 msgid "Turkish" msgstr "Турски" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:48 msgid "Vietnamese" msgstr "Виетнамски" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:49 msgid "Chinese (Simplified)" msgstr "Китайски (опростен)" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:50 msgid "Chinese (Traditional)" msgstr "Китайски (традиционен)" @@ -391,7 +395,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:559 stock/models.py:2446 +#: InvenTree/models.py:559 stock/models.py:2449 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -401,7 +405,7 @@ msgstr "" msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -432,13 +436,13 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:3000 users/models.py:100 +#: templates/js/translated/stock.js:3036 users/models.py:100 msgid "User" msgstr "Потребител" @@ -479,10 +483,10 @@ msgstr "" msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -495,7 +499,7 @@ msgstr "" #: templates/js/translated/company.js:1155 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "" @@ -506,10 +510,10 @@ msgstr "" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -523,7 +527,7 @@ msgstr "" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -531,8 +535,8 @@ msgstr "" #: templates/js/translated/return_order.js:314 #: templates/js/translated/sales_order.js:802 #: templates/js/translated/sales_order.js:1812 -#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021 -#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "" @@ -545,7 +549,7 @@ msgid "parent" msgstr "родител" #: InvenTree/models.py:916 templates/js/translated/part.js:2794 -#: templates/js/translated/stock.js:2721 +#: templates/js/translated/stock.js:2757 msgid "Path" msgstr "" @@ -581,7 +585,7 @@ msgstr "" msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:62 part/models.py:4134 +#: InvenTree/serializers.py:62 part/models.py:4143 msgid "Must be a valid number" msgstr "" @@ -596,89 +600,89 @@ msgstr "" msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:436 +#: InvenTree/serializers.py:441 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:448 +#: InvenTree/serializers.py:453 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:467 +#: InvenTree/serializers.py:472 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:469 +#: InvenTree/serializers.py:474 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:476 +#: InvenTree/serializers.py:481 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:537 +#: InvenTree/serializers.py:542 msgid "Filename" msgstr "" -#: InvenTree/serializers.py:571 +#: InvenTree/serializers.py:576 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:591 +#: InvenTree/serializers.py:596 msgid "Data File" msgstr "" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:597 msgid "Select data file for upload" msgstr "" -#: InvenTree/serializers.py:609 +#: InvenTree/serializers.py:614 msgid "Unsupported file type" msgstr "" -#: InvenTree/serializers.py:615 +#: InvenTree/serializers.py:620 msgid "File is too large" msgstr "" -#: InvenTree/serializers.py:636 +#: InvenTree/serializers.py:641 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:639 +#: InvenTree/serializers.py:644 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:752 +#: InvenTree/serializers.py:757 msgid "No data rows provided" msgstr "" -#: InvenTree/serializers.py:755 +#: InvenTree/serializers.py:760 msgid "No data columns supplied" msgstr "" -#: InvenTree/serializers.py:822 +#: InvenTree/serializers.py:827 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "" -#: InvenTree/serializers.py:831 +#: InvenTree/serializers.py:836 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:859 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:855 +#: InvenTree/serializers.py:860 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:873 +#: InvenTree/serializers.py:878 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/status.py:66 part/serializers.py:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "" @@ -818,7 +822,7 @@ msgstr "" msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 msgid "Merged stock items" msgstr "" @@ -838,7 +842,7 @@ msgstr "" msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 msgid "Consumed by build order" msgstr "" @@ -938,14 +942,14 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -960,7 +964,7 @@ msgid "Tracked" msgstr "" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -985,7 +989,7 @@ msgstr "" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "" @@ -1014,7 +1018,7 @@ msgstr "" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1044,11 +1048,11 @@ msgstr "" #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1059,7 +1063,7 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:267 stock/serializers.py:689 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1086,9 +1090,9 @@ msgstr "" #: templates/js/translated/sales_order.js:1598 #: templates/js/translated/sales_order.js:1796 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960 -#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054 -#: templates/js/translated/stock.js:3200 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 msgid "Part" msgstr "Част" @@ -1146,8 +1150,8 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" @@ -1242,53 +1246,53 @@ msgstr "" msgid "Project code for this build order" msgstr "" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "" -#: build/models.py:789 +#: build/models.py:805 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" msgstr "" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1298,7 +1302,7 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:463 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1310,7 +1314,7 @@ msgstr "" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1325,43 +1329,43 @@ msgstr "" #: templates/js/translated/sales_order.js:1698 #: templates/js/translated/sales_order.js:1824 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 -#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985 -#: templates/js/translated/stock.js:3068 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1381 +#: build/models.py:1397 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1390 +#: build/models.py:1406 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1473 +#: build/models.py:1489 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 @@ -1372,23 +1376,23 @@ msgstr "" #: templates/js/translated/sales_order.js:1605 #: templates/js/translated/sales_order.js:1692 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 -#: templates/js/translated/stock.js:2941 +#: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "" @@ -1425,8 +1429,8 @@ msgstr "" msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" @@ -1451,10 +1455,10 @@ msgstr "" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1466,8 +1470,8 @@ msgstr "" #: templates/js/translated/sales_order.js:1627 #: templates/js/translated/sales_order.js:1706 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164 -#: templates/js/translated/stock.js:2835 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 msgid "Location" msgstr "" @@ -1493,16 +1497,16 @@ msgstr "" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 #: templates/js/translated/purchase_order.js:1723 #: templates/js/translated/return_order.js:331 #: templates/js/translated/sales_order.js:819 -#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959 -#: templates/js/translated/stock.js:3084 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 msgid "Status" msgstr "" @@ -1566,7 +1570,7 @@ msgstr "" msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "" @@ -1602,11 +1606,11 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1065 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" @@ -1619,7 +1623,7 @@ msgstr "" msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "" @@ -1659,44 +1663,45 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 #: stock/api.py:745 msgid "BOM Item" msgstr "" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1862,7 +1867,7 @@ msgstr "" #: templates/js/translated/pricing.js:929 #: templates/js/translated/sales_order.js:769 #: templates/js/translated/sales_order.js:992 -#: templates/js/translated/stock.js:2888 +#: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "" @@ -1920,8 +1925,8 @@ msgstr "" #: templates/js/translated/build.js:1377 #: templates/js/translated/model_renderers.js:235 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153 -#: templates/js/translated/stock.js:3091 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" @@ -1990,27 +1995,31 @@ msgstr "" msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:210 -msgid "Incomplete Build Outputs" -msgstr "" - -#: build/templates/build/detail.html:214 -msgid "Create new build output" +#: 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:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2026,15 +2035,15 @@ msgstr "" msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" msgstr "" @@ -2112,1390 +2121,1414 @@ msgstr "" msgid "User or group responsible for this project" msgstr "" -#: common/models.py:737 +#: common/models.py:744 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:741 +#: common/models.py:748 msgid "Settings value" msgstr "" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "" -#: common/models.py:1231 +#: common/models.py:1238 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1283 +#: common/models.py:1290 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "" -#: common/models.py:1298 +#: common/models.py:1305 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "" -#: common/models.py:1305 +#: common/models.py:1312 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "" -#: common/models.py:1332 +#: common/models.py:1339 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "" -#: common/models.py:1339 +#: common/models.py:1346 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "" -#: common/models.py:1346 +#: common/models.py:1353 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1352 +#: common/models.py:1359 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1360 +#: common/models.py:1367 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1369 +#: common/models.py:1376 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1378 +#: common/models.py:1385 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1386 +#: common/models.py:1393 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1399 +#: common/models.py:1406 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "" -#: common/models.py:1411 +#: common/models.py:1418 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1415 +#: common/models.py:1422 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1421 +#: common/models.py:1428 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1427 +#: common/models.py:1434 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1433 +#: common/models.py:1440 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1439 +#: common/models.py:1446 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1505 +#: common/models.py:1512 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1512 +#: common/models.py:1519 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "" -#: common/models.py:1525 +#: common/models.py:1532 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1526 +#: common/models.py:1533 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1530 +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1532 +#: common/models.py:1539 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1540 +#: common/models.py:1547 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1548 +#: common/models.py:1555 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1564 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1580 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1588 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1595 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1603 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1611 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1618 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1632 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1645 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: 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:202 msgid "Page Size" msgstr "" -#: common/models.py:1651 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1657 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1664 +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1671 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1677 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1692 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1704 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1711 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1719 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1725 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1731 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1736 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1741 +#: 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 "Build Order Reference Pattern" msgstr "" -#: common/models.py:1743 +#: common/models.py:1764 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1757 +#: common/models.py:1778 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1765 +#: common/models.py:1786 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1773 +#: common/models.py:1794 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1780 +#: common/models.py:1801 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1787 +#: common/models.py:1808 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1795 +#: common/models.py:1816 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1803 +#: common/models.py:1824 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1811 +#: common/models.py:1832 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "" -#: common/models.py:1825 +#: common/models.py:1846 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1838 +#: common/models.py:1859 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1844 +#: common/models.py:1865 msgid "Email required" msgstr "" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1852 +#: common/models.py:1873 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "" -#: common/models.py:1859 +#: common/models.py:1880 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "" -#: common/models.py:1865 +#: common/models.py:1886 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "" -#: common/models.py:1879 +#: common/models.py:1900 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1892 +#: common/models.py:1913 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1929 +#: common/models.py:1950 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "" -#: common/models.py:1936 +#: common/models.py:1957 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1950 +#: common/models.py:1971 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1958 +#: common/models.py:1979 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1966 +#: common/models.py:1987 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1974 +#: common/models.py:1995 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2029 common/models.py:2429 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2043 +#: common/models.py:2070 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2045 +#: common/models.py:2072 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2051 +#: common/models.py:2078 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2052 +#: common/models.py:2079 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2057 +#: common/models.py:2084 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2058 +#: common/models.py:2085 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2063 +#: common/models.py:2090 msgid "Show latest parts" msgstr "" -#: common/models.py:2064 +#: common/models.py:2091 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2069 +#: common/models.py:2096 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2070 +#: common/models.py:2097 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2075 +#: common/models.py:2102 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2076 +#: common/models.py:2103 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2081 +#: common/models.py:2108 msgid "Show low stock" msgstr "" -#: common/models.py:2082 +#: common/models.py:2109 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2087 +#: common/models.py:2114 msgid "Show depleted stock" msgstr "" -#: common/models.py:2088 +#: common/models.py:2115 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2093 +#: common/models.py:2120 msgid "Show needed stock" msgstr "" -#: common/models.py:2094 +#: common/models.py:2121 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2099 +#: common/models.py:2126 msgid "Show expired stock" msgstr "" -#: common/models.py:2100 +#: common/models.py:2127 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2105 +#: common/models.py:2132 msgid "Show stale stock" msgstr "" -#: common/models.py:2106 +#: common/models.py:2133 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2111 +#: common/models.py:2138 msgid "Show pending builds" msgstr "" -#: common/models.py:2112 +#: common/models.py:2139 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2117 +#: common/models.py:2144 msgid "Show overdue builds" msgstr "" -#: common/models.py:2118 +#: common/models.py:2145 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2123 +#: common/models.py:2150 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2124 +#: common/models.py:2151 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2129 +#: common/models.py:2156 msgid "Show overdue POs" msgstr "" -#: common/models.py:2130 +#: common/models.py:2157 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2135 +#: common/models.py:2162 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2136 +#: common/models.py:2163 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2141 +#: common/models.py:2168 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2142 +#: common/models.py:2169 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2147 +#: common/models.py:2174 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2148 +#: common/models.py:2175 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2153 +#: common/models.py:2180 msgid "Show News" msgstr "" -#: common/models.py:2154 +#: common/models.py:2181 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2159 +#: common/models.py:2186 msgid "Inline label display" msgstr "" -#: common/models.py:2161 +#: common/models.py:2188 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2167 +#: common/models.py:2194 msgid "Default label printer" msgstr "" -#: common/models.py:2169 +#: common/models.py:2196 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2175 +#: common/models.py:2202 msgid "Inline report display" msgstr "" -#: common/models.py:2177 +#: common/models.py:2204 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2183 +#: common/models.py:2210 msgid "Search Parts" msgstr "" -#: common/models.py:2184 +#: common/models.py:2211 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2189 +#: common/models.py:2216 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2190 +#: common/models.py:2217 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2195 +#: common/models.py:2222 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2196 +#: common/models.py:2223 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2201 +#: common/models.py:2228 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2202 +#: common/models.py:2229 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2207 +#: common/models.py:2234 msgid "Search Categories" msgstr "" -#: common/models.py:2208 +#: common/models.py:2235 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2213 +#: common/models.py:2240 msgid "Search Stock" msgstr "" -#: common/models.py:2214 +#: common/models.py:2241 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2219 +#: common/models.py:2246 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2221 +#: common/models.py:2248 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2227 +#: common/models.py:2254 msgid "Search Locations" msgstr "" -#: common/models.py:2228 +#: common/models.py:2255 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2233 +#: common/models.py:2260 msgid "Search Companies" msgstr "" -#: common/models.py:2234 +#: common/models.py:2261 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2239 +#: common/models.py:2266 msgid "Search Build Orders" msgstr "" -#: common/models.py:2240 +#: common/models.py:2267 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2245 +#: common/models.py:2272 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2246 +#: common/models.py:2273 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2251 +#: common/models.py:2278 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2253 +#: common/models.py:2280 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2259 +#: common/models.py:2286 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2260 +#: common/models.py:2287 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2265 +#: common/models.py:2292 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2267 +#: common/models.py:2294 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2273 +#: common/models.py:2300 msgid "Search Return Orders" msgstr "" -#: common/models.py:2274 +#: common/models.py:2301 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2279 +#: common/models.py:2306 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2281 +#: common/models.py:2308 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2287 +#: common/models.py:2314 msgid "Search Preview Results" msgstr "" -#: common/models.py:2289 +#: common/models.py:2316 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2295 +#: common/models.py:2322 msgid "Regex Search" msgstr "" -#: common/models.py:2296 +#: common/models.py:2323 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2301 +#: common/models.py:2328 msgid "Whole Word Search" msgstr "" -#: common/models.py:2302 +#: common/models.py:2329 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2307 +#: common/models.py:2334 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2308 +#: common/models.py:2335 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2313 +#: common/models.py:2340 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2314 +#: common/models.py:2341 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2319 +#: common/models.py:2346 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2320 +#: common/models.py:2347 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2325 +#: common/models.py:2352 msgid "Date Format" msgstr "" -#: common/models.py:2326 +#: common/models.py:2353 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2366 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2340 +#: common/models.py:2367 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2372 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2347 +#: common/models.py:2374 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2353 +#: common/models.py:2380 msgid "Table String Length" msgstr "" -#: common/models.py:2355 +#: common/models.py:2382 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2361 +#: common/models.py:2388 msgid "Default part label template" msgstr "" -#: common/models.py:2362 +#: common/models.py:2389 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2367 +#: common/models.py:2394 msgid "Default stock item template" msgstr "" -#: common/models.py:2369 +#: common/models.py:2396 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2375 +#: common/models.py:2402 msgid "Default stock location label template" msgstr "" -#: common/models.py:2377 +#: common/models.py:2404 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2383 +#: common/models.py:2410 msgid "Receive error reports" msgstr "" -#: common/models.py:2384 +#: common/models.py:2411 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2389 +#: common/models.py:2416 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2417 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2460 msgid "Price break quantity" msgstr "" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3503,23 +3536,23 @@ msgstr "" msgid "Price" msgstr "" -#: common/models.py:2441 +#: common/models.py:2468 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2639 common/models.py:2824 msgid "Endpoint" msgstr "" -#: common/models.py:2613 +#: common/models.py:2640 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2623 +#: common/models.py:2650 msgid "Name for this webhook" msgstr "" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3529,101 +3562,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2627 +#: common/models.py:2654 msgid "Is this webhook active" msgstr "" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2670 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2644 +#: common/models.py:2671 msgid "Token for access" msgstr "" -#: common/models.py:2652 +#: common/models.py:2679 msgid "Secret" msgstr "" -#: common/models.py:2653 +#: common/models.py:2680 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2761 +#: common/models.py:2788 msgid "Message ID" msgstr "" -#: common/models.py:2762 +#: common/models.py:2789 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2770 +#: common/models.py:2797 msgid "Host" msgstr "" -#: common/models.py:2771 +#: common/models.py:2798 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2779 +#: common/models.py:2806 msgid "Header" msgstr "" -#: common/models.py:2780 +#: common/models.py:2807 msgid "Header of this message" msgstr "" -#: common/models.py:2787 +#: common/models.py:2814 msgid "Body" msgstr "" -#: common/models.py:2788 +#: common/models.py:2815 msgid "Body of this message" msgstr "" -#: common/models.py:2798 +#: common/models.py:2825 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2803 +#: common/models.py:2830 msgid "Worked on" msgstr "" -#: common/models.py:2804 +#: common/models.py:2831 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2930 +#: common/models.py:2957 msgid "Id" msgstr "" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2959 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2963 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2965 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2967 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Read" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Was this news item read?" msgstr "" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2987 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3633,31 +3666,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2960 +#: common/models.py:2987 msgid "Image file" msgstr "" -#: common/models.py:3002 +#: common/models.py:3029 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3021 +#: common/models.py:3048 msgid "Unit name" msgstr "" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3029 +#: common/models.py:3056 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3037 +#: common/models.py:3064 msgid "Unit definition" msgstr "" @@ -3961,7 +3994,7 @@ msgid "Link to address information (external)" msgstr "" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" @@ -3972,7 +4005,7 @@ msgstr "" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3987,7 +4020,7 @@ msgid "Select manufacturer" msgstr "" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4022,9 +4055,9 @@ msgstr "" #: company/models.py:615 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2438 templates/js/translated/company.js:1156 +#: stock/models.py:2441 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1519 msgid "Value" msgstr "" @@ -4033,7 +4066,7 @@ msgid "Parameter value" msgstr "" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4059,7 +4092,7 @@ msgstr "" #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4076,7 +4109,7 @@ msgstr "" msgid "Select supplier" msgstr "" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "" @@ -4093,13 +4126,13 @@ msgid "Supplier part description" msgstr "" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:579 msgid "Note" msgstr "" @@ -4112,10 +4145,10 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 -#: templates/js/translated/stock.js:2387 +#: templates/js/translated/stock.js:2423 msgid "Packaging" msgstr "" @@ -4157,7 +4190,7 @@ msgstr "" msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "" @@ -4218,13 +4251,13 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1100 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 #: templates/js/translated/return_order.js:296 #: templates/js/translated/sales_order.js:784 -#: templates/js/translated/stock.js:2923 +#: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:804 msgid "Customer" msgstr "" @@ -4429,8 +4462,9 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "" @@ -4482,7 +4516,7 @@ msgstr "" #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2243 +#: templates/js/translated/stock.js:2279 msgid "Supplier Part" msgstr "" @@ -4528,7 +4562,7 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4577,15 +4611,17 @@ msgstr "" msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 -#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:193 msgid "Stock Items" msgstr "" @@ -4639,8 +4675,8 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" @@ -4665,7 +4701,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "" @@ -4679,8 +4715,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "" @@ -4821,7 +4857,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1674 -#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "" @@ -4830,7 +4866,7 @@ msgstr "" #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 -#: templates/js/translated/stock.js:2905 +#: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "" @@ -4838,11 +4874,11 @@ msgstr "" msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -5029,9 +5065,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2274 +#: templates/js/translated/stock.js:2310 msgid "Purchase Price" msgstr "" @@ -5084,8 +5120,8 @@ msgstr "" msgid "User who checked this shipment" msgstr "" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "" @@ -5133,7 +5169,7 @@ msgstr "" msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "" @@ -5207,159 +5243,159 @@ msgstr "" msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:610 +#: order/serializers.py:632 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1677 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "" @@ -5733,7 +5769,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" @@ -5763,12 +5799,12 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5780,12 +5816,12 @@ msgstr "" #: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 -#: templates/js/translated/stock.js:1999 +#: templates/js/translated/stock.js:2035 msgid "IPN" msgstr "" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" @@ -5861,10 +5897,10 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -5885,17 +5921,17 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3897 msgid "Part IPN" msgstr "" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5973,8 +6009,8 @@ msgstr "" msgid "This option must be selected" msgstr "" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5982,12 +6018,17 @@ msgstr "" msgid "Category" msgstr "" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "Цялостна наличност" @@ -5995,7 +6036,7 @@ msgstr "Цялостна наличност" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -6010,7 +6051,8 @@ msgstr "" msgid "Default location for parts in this category" msgstr "" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 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" @@ -6076,7 +6118,7 @@ msgstr "" msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3896 msgid "Part name" msgstr "" @@ -6358,7 +6400,7 @@ msgstr "" #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1732 -#: templates/js/translated/stock.js:2785 +#: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" @@ -6410,586 +6452,602 @@ msgstr "" msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3448 -msgid "Test with this name already exists for this part" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "" -#: part/models.py:3496 +#: part/models.py:3505 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "" -#: part/models.py:3503 +#: part/models.py:3512 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3847 +#: part/models.py:3856 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3885 +#: part/models.py:3894 msgid "Part ID or part name" msgstr "" -#: part/models.py:3886 +#: part/models.py:3895 msgid "Unique part ID value" msgstr "" -#: part/models.py:3888 +#: part/models.py:3897 msgid "Part IPN value" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "Level" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "BOM level" msgstr "" -#: part/models.py:3979 +#: part/models.py:3988 msgid "Select parent part" msgstr "" -#: part/models.py:3989 +#: part/models.py:3998 msgid "Sub part" msgstr "" -#: part/models.py:3990 +#: part/models.py:3999 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4001 +#: part/models.py:4010 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4007 +#: part/models.py:4016 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4013 +#: part/models.py:4022 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4029 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4021 +#: part/models.py:4030 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4028 +#: part/models.py:4037 msgid "BOM item reference" msgstr "" -#: part/models.py:4036 +#: part/models.py:4045 msgid "BOM item notes" msgstr "" -#: part/models.py:4042 +#: part/models.py:4051 msgid "Checksum" msgstr "" -#: part/models.py:4043 +#: part/models.py:4052 msgid "BOM line checksum" msgstr "" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4057 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4049 +#: part/models.py:4058 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4063 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:4055 +#: part/models.py:4064 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4069 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4061 +#: part/models.py:4070 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4146 stock/models.py:649 +#: part/models.py:4155 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4165 part/models.py:4167 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4298 +#: part/models.py:4307 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4319 +#: part/models.py:4328 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4332 +#: part/models.py:4341 msgid "Parent BOM item" msgstr "" -#: part/models.py:4340 +#: part/models.py:4349 msgid "Substitute part" msgstr "" -#: part/models.py:4356 +#: part/models.py:4365 msgid "Part 1" msgstr "" -#: part/models.py:4364 +#: part/models.py:4373 msgid "Part 2" msgstr "" -#: part/models.py:4365 +#: part/models.py:4374 msgid "Select Related Part" msgstr "" -#: part/models.py:4384 +#: part/models.py:4393 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4389 +#: part/models.py:4398 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:432 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:480 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1104 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1078 +#: part/serializers.py:1114 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1088 +#: part/serializers.py:1124 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1647 +#: part/serializers.py:1693 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1659 +#: part/serializers.py:1705 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1694 +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "" @@ -7147,7 +7205,7 @@ msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/stock.js:2179 users/models.py:191 +#: templates/js/translated/stock.js:2215 users/models.py:191 msgid "Stocktake" msgstr "" @@ -7221,7 +7279,7 @@ msgid "Validate BOM" msgstr "" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "" @@ -7405,7 +7463,7 @@ msgstr "" msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "" @@ -7509,7 +7567,7 @@ msgstr "" #: templates/InvenTree/settings/sidebar.html:51 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 -#: templates/js/translated/stock.js:2033 templates/navbar.html:31 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 msgid "Stock" msgstr "Наличност" @@ -7555,7 +7613,7 @@ msgstr "" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 -#: templates/js/translated/stock.js:2209 +#: templates/js/translated/stock.js:2245 msgid "Last Updated" msgstr "" @@ -7999,7 +8057,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "" @@ -8307,16 +8365,16 @@ msgstr "" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "" @@ -8336,103 +8394,111 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" msgstr "" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" msgstr "" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8499,12 +8565,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1492 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Result" msgstr "" @@ -8531,7 +8597,7 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:168 #: stock/admin.py:162 templates/js/translated/stock.js:700 -#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110 msgid "Serial" msgstr "" @@ -8615,7 +8681,7 @@ msgstr "" #: stock/admin.py:256 stock/models.py:886 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2193 users/models.py:113 +#: templates/js/translated/stock.js:2229 users/models.py:113 msgid "Expiry Date" msgstr "" @@ -8713,7 +8779,7 @@ msgstr "" msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:174 templates/js/translated/stock.js:2745 +#: stock/models.py:174 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" @@ -8722,7 +8788,7 @@ msgstr "" msgid "This is an external stock location" msgstr "" -#: stock/models.py:181 templates/js/translated/stock.js:2754 +#: stock/models.py:181 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" @@ -8739,7 +8805,7 @@ msgstr "" msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:290 msgid "Stock item cannot be created for virtual parts" msgstr "" @@ -8784,7 +8850,7 @@ msgstr "" msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1351 msgid "Packaging this stock item is stored in" msgstr "" @@ -8796,7 +8862,7 @@ msgstr "" msgid "Serial number for this item" msgstr "" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1334 msgid "Batch code for this stock item" msgstr "" @@ -8873,7 +8939,7 @@ msgstr "" msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:529 msgid "Serial numbers already exist" msgstr "" @@ -8905,7 +8971,7 @@ msgstr "" msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1240 msgid "Duplicate stock items" msgstr "" @@ -8929,207 +8995,236 @@ msgstr "" msgid "Entry notes" msgstr "" -#: stock/models.py:2399 +#: stock/models.py:2402 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2405 +#: stock/models.py:2408 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Test result" msgstr "" -#: stock/models.py:2439 +#: stock/models.py:2442 msgid "Test output value" msgstr "" -#: stock/models.py:2447 +#: stock/models.py:2450 msgid "Test result attachment" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2454 msgid "Test notes" msgstr "" -#: stock/serializers.py:96 +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "" + +#: stock/models.py:2463 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2469 +msgid "Started" +msgstr "" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:100 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:119 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 +#: stock/serializers.py:151 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:184 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:267 +#: stock/serializers.py:282 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:380 +#: stock/serializers.py:402 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:442 +#: stock/serializers.py:464 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:455 +#: stock/serializers.py:477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:462 +#: stock/serializers.py:484 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:480 +#: stock/serializers.py:502 msgid "Optional note field" msgstr "" -#: stock/serializers.py:490 +#: stock/serializers.py:512 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:545 +#: stock/serializers.py:567 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:574 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:553 +#: stock/serializers.py:575 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:566 +#: stock/serializers.py:588 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:596 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:581 +#: stock/serializers.py:607 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:620 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:628 +#: stock/serializers.py:655 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:663 +#: stock/serializers.py:690 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:676 +#: stock/serializers.py:703 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:693 +#: stock/serializers.py:720 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:724 +#: stock/serializers.py:751 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:761 +#: stock/serializers.py:788 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:767 +#: stock/serializers.py:794 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1036 +#: stock/serializers.py:1069 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1040 +#: stock/serializers.py:1073 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1044 +#: stock/serializers.py:1077 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1068 +#: stock/serializers.py:1101 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1074 +#: stock/serializers.py:1107 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1082 +#: stock/serializers.py:1115 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1125 stock/serializers.py:1379 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1171 +#: stock/serializers.py:1204 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1176 +#: stock/serializers.py:1209 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1177 +#: stock/serializers.py:1210 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1182 +#: stock/serializers.py:1215 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1183 +#: stock/serializers.py:1216 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1193 +#: stock/serializers.py:1226 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1260 +#: stock/serializers.py:1293 msgid "No Change" msgstr "" -#: stock/serializers.py:1289 +#: stock/serializers.py:1322 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1308 +#: stock/serializers.py:1341 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1336 +#: stock/serializers.py:1369 msgid "Stock transaction notes" msgstr "" @@ -9154,7 +9249,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 msgid "Delete Test Data" msgstr "" @@ -9170,15 +9265,15 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:274 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 msgid "Add Test Result" msgstr "" @@ -9201,17 +9296,17 @@ msgid "Stock adjustment actions" msgstr "" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 msgid "Count stock" msgstr "" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:1803 msgid "Add stock" msgstr "" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1776 +#: templates/js/translated/stock.js:1812 msgid "Remove stock" msgstr "" @@ -9220,12 +9315,12 @@ msgid "Serialize stock" msgstr "" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 msgid "Transfer stock" msgstr "" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1884 msgid "Assign to customer" msgstr "" @@ -9364,7 +9459,7 @@ msgid "No stocktake performed" msgstr "" #: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1915 +#: templates/js/translated/stock.js:1951 msgid "stock item" msgstr "" @@ -9469,7 +9564,7 @@ msgid "New Location" msgstr "" #: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2536 +#: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" @@ -10063,7 +10158,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:37 msgid "New Location Type" msgstr "" @@ -10120,7 +10215,7 @@ msgstr "" msgid "Stock Settings" msgstr "" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:33 msgid "Stock Location Types" msgstr "" @@ -10662,7 +10757,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "" @@ -10676,7 +10771,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "" @@ -11051,62 +11146,66 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "" @@ -11389,7 +11488,7 @@ msgstr "" #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 -#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11401,7 +11500,7 @@ msgstr "" msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006 +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" @@ -11449,29 +11548,29 @@ msgstr "" msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "" @@ -11804,15 +11903,15 @@ msgstr "" msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3087 +#: templates/js/translated/forms.js:3103 msgid "Select Columns" msgstr "" @@ -12289,7 +12388,7 @@ msgid "No category" msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 -#: templates/js/translated/stock.js:2633 +#: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" @@ -12301,7 +12400,7 @@ msgstr "" msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" @@ -12313,64 +12412,64 @@ msgstr "" msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" @@ -12907,7 +13006,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1737 +#: templates/js/translated/stock.js:1773 msgid "Shipped to customer" msgstr "" @@ -13165,7 +13264,7 @@ msgstr "" msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" @@ -13189,248 +13288,256 @@ msgstr "" msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1440 +#: templates/js/translated/stock.js:1447 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1443 +#: templates/js/translated/stock.js:1450 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1466 +#: templates/js/translated/stock.js:1473 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1530 +#: templates/js/translated/stock.js:1537 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1677 +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1733 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1729 +#: templates/js/translated/stock.js:1765 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1769 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1741 +#: templates/js/translated/stock.js:1777 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1747 +#: templates/js/translated/stock.js:1783 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1839 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1848 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:1897 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1916 +#: templates/js/translated/stock.js:1952 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1921 +#: templates/js/translated/stock.js:1957 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1932 +#: templates/js/translated/stock.js:1968 msgid "Stock Actions" msgstr "" -#: templates/js/translated/stock.js:1976 +#: templates/js/translated/stock.js:2012 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2054 +#: templates/js/translated/stock.js:2090 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2059 +#: templates/js/translated/stock.js:2095 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2062 +#: templates/js/translated/stock.js:2098 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2065 +#: templates/js/translated/stock.js:2101 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2067 +#: templates/js/translated/stock.js:2103 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2069 +#: templates/js/translated/stock.js:2105 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2072 +#: templates/js/translated/stock.js:2108 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2074 +#: templates/js/translated/stock.js:2110 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2114 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2080 +#: templates/js/translated/stock.js:2116 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2085 +#: templates/js/translated/stock.js:2121 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2087 +#: templates/js/translated/stock.js:2123 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2089 +#: templates/js/translated/stock.js:2125 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2129 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2258 +#: templates/js/translated/stock.js:2294 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2305 +#: templates/js/translated/stock.js:2341 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2433 +#: templates/js/translated/stock.js:2469 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2573 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2692 +#: templates/js/translated/stock.js:2728 msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2810 +#: templates/js/translated/stock.js:2846 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2814 +#: templates/js/translated/stock.js:2850 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:2862 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2848 +#: templates/js/translated/stock.js:2884 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2865 +#: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2880 +#: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2897 +#: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2914 +#: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3005 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2977 +#: templates/js/translated/stock.js:3013 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:3049 +#: templates/js/translated/stock.js:3085 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139 +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:3161 +#: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:3182 +#: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:3183 +#: 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:3185 +#: 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:3186 +#: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:3187 +#: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:3188 +#: 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:3201 +#: templates/js/translated/stock.js:3237 msgid "Select part to install" msgstr "" -#: templates/js/translated/stock.js:3264 +#: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" msgstr "" -#: templates/js/translated/stock.js:3277 +#: templates/js/translated/stock.js:3313 msgid "Selected stock items" msgstr "" -#: templates/js/translated/stock.js:3281 +#: templates/js/translated/stock.js:3317 msgid "Change Stock Status" msgstr "" diff --git a/InvenTree/locale/cs/LC_MESSAGES/django.po b/InvenTree/locale/cs/LC_MESSAGES/django.po index bcd0c21ed8..ef7861daac 100644 --- a/InvenTree/locale/cs/LC_MESSAGES/django.po +++ b/InvenTree/locale/cs/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 04:05+0000\n" -"PO-Revision-Date: 2024-02-28 07:23\n" +"POT-Creation-Date: 2024-03-19 01:26+0000\n" +"PO-Revision-Date: 2024-03-19 11:51\n" "Last-Translator: \n" "Language-Team: Czech\n" "Language: cs_CZ\n" @@ -30,20 +30,20 @@ msgstr "Uživatel nemá právo zobrazit tento model" msgid "Invalid unit provided ({unit})" msgstr "" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "Není k dispozici žádná hodnota" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "Nelze převést {original} na {unit}" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" msgstr "Vyplněno neplatné množství" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" msgstr "Vyplněno neplatné množství ({exc})" @@ -64,18 +64,18 @@ msgstr "Zadejte datum" #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 #: templates/js/translated/return_order.js:776 #: templates/js/translated/sales_order.js:1067 #: templates/js/translated/sales_order.js:1982 -#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 msgid "Notes" msgstr "Poznámky" @@ -132,42 +132,42 @@ msgstr "Zadaná e-mailová doména není povolena." msgid "Registration is disabled." msgstr "Registrace vypnuta." -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "Vyplněno neplatné množství" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "Nevyplněné výrobní číslo" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "Duplicitní výrobní číslo" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "Neplatný rozsah skupiny: {group}" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "Rozsah skupiny {group} překračuje povolené množství ({expected_quantity})" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "Neplatná sekvence skupiny: {group}" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "Nenalezena žádná výrobní čísla" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "Počet jedinečných sériových čísel ({len(serials)}) musí odpovídat množství ({expected_quantity})" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "Odstranit HTML tagy z této hodnoty" @@ -203,131 +203,135 @@ msgstr "Vzdálený server vrátil prázdnou odpověď" msgid "Supplied URL is not a valid image file" msgstr "Zadaná URL adresa není platný soubor obrázku" -#: InvenTree/locales.py:16 +#: InvenTree/locales.py:18 msgid "Bulgarian" msgstr "Bulharština" -#: InvenTree/locales.py:17 +#: InvenTree/locales.py:19 msgid "Czech" msgstr "Čeština" -#: InvenTree/locales.py:18 +#: InvenTree/locales.py:20 msgid "Danish" msgstr "Dánština" -#: InvenTree/locales.py:19 +#: InvenTree/locales.py:21 msgid "German" msgstr "Němčina" -#: InvenTree/locales.py:20 +#: InvenTree/locales.py:22 msgid "Greek" msgstr "Řečtina" -#: InvenTree/locales.py:21 +#: InvenTree/locales.py:23 msgid "English" msgstr "Angličtina" -#: InvenTree/locales.py:22 +#: InvenTree/locales.py:24 msgid "Spanish" msgstr "Španělština" -#: InvenTree/locales.py:23 +#: InvenTree/locales.py:25 msgid "Spanish (Mexican)" msgstr "Španělština (Mexiko)" -#: InvenTree/locales.py:24 +#: InvenTree/locales.py:26 msgid "Farsi / Persian" msgstr "Farsi / Perština" -#: InvenTree/locales.py:25 +#: InvenTree/locales.py:27 msgid "Finnish" msgstr "Finština" -#: InvenTree/locales.py:26 +#: InvenTree/locales.py:28 msgid "French" msgstr "Francouzština" -#: InvenTree/locales.py:27 +#: InvenTree/locales.py:29 msgid "Hebrew" msgstr "Hebrejština" -#: InvenTree/locales.py:28 +#: InvenTree/locales.py:30 msgid "Hindi" msgstr "Hindština" -#: InvenTree/locales.py:29 +#: InvenTree/locales.py:31 msgid "Hungarian" msgstr "Maďarština" -#: InvenTree/locales.py:30 +#: InvenTree/locales.py:32 msgid "Italian" msgstr "Italština" -#: InvenTree/locales.py:31 +#: InvenTree/locales.py:33 msgid "Japanese" msgstr "Japonština" -#: InvenTree/locales.py:32 +#: InvenTree/locales.py:34 msgid "Korean" msgstr "Korejština" -#: InvenTree/locales.py:33 +#: InvenTree/locales.py:35 +msgid "Latvian" +msgstr "" + +#: InvenTree/locales.py:36 msgid "Dutch" msgstr "Nizozemština" -#: InvenTree/locales.py:34 +#: InvenTree/locales.py:37 msgid "Norwegian" msgstr "Norština" -#: InvenTree/locales.py:35 +#: InvenTree/locales.py:38 msgid "Polish" msgstr "Polština" -#: InvenTree/locales.py:36 +#: InvenTree/locales.py:39 msgid "Portuguese" msgstr "Portugalština" -#: InvenTree/locales.py:37 +#: InvenTree/locales.py:40 msgid "Portuguese (Brazilian)" msgstr "Portugalština (Brazilská)" -#: InvenTree/locales.py:38 +#: InvenTree/locales.py:41 msgid "Russian" msgstr "Ruština" -#: InvenTree/locales.py:39 +#: InvenTree/locales.py:42 msgid "Slovak" msgstr "" -#: InvenTree/locales.py:40 +#: InvenTree/locales.py:43 msgid "Slovenian" msgstr "Slovinština" -#: InvenTree/locales.py:41 +#: InvenTree/locales.py:44 msgid "Serbian" msgstr "Srbština" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:45 msgid "Swedish" msgstr "Švédština" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:46 msgid "Thai" msgstr "Thajština" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:47 msgid "Turkish" msgstr "Turečtina" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:48 msgid "Vietnamese" msgstr "Vietnamština" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:49 msgid "Chinese (Simplified)" msgstr "Čínština (zjednodušená)" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:50 msgid "Chinese (Traditional)" msgstr "Čínština (tradiční)" @@ -391,7 +395,7 @@ msgstr "Chybějící soubor" msgid "Missing external link" msgstr "Chybějící externí odkaz" -#: InvenTree/models.py:559 stock/models.py:2446 +#: InvenTree/models.py:559 stock/models.py:2449 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -401,7 +405,7 @@ msgstr "Příloha" msgid "Select file to attach" msgstr "Vyberte soubor k přiložení" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -432,13 +436,13 @@ msgstr "Komentář" msgid "File comment" msgstr "Komentář k souboru" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:3000 users/models.py:100 +#: templates/js/translated/stock.js:3036 users/models.py:100 msgid "User" msgstr "Uživatel" @@ -479,10 +483,10 @@ msgstr "Duplicitní názvy nemohou existovat pod stejným nadřazeným názvem" msgid "Invalid choice" msgstr "Neplatný výběr" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -495,7 +499,7 @@ msgstr "Neplatný výběr" #: templates/js/translated/company.js:1155 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Název" @@ -506,10 +510,10 @@ msgstr "Název" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -523,7 +527,7 @@ msgstr "Název" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -531,8 +535,8 @@ msgstr "Název" #: templates/js/translated/return_order.js:314 #: templates/js/translated/sales_order.js:802 #: templates/js/translated/sales_order.js:1812 -#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021 -#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "Popis" @@ -545,7 +549,7 @@ msgid "parent" msgstr "nadřazený" #: InvenTree/models.py:916 templates/js/translated/part.js:2794 -#: templates/js/translated/stock.js:2721 +#: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Cesta" @@ -581,7 +585,7 @@ msgstr "Chyba serveru" msgid "An error has been logged by the server." msgstr "Server zaznamenal chybu." -#: InvenTree/serializers.py:62 part/models.py:4134 +#: InvenTree/serializers.py:62 part/models.py:4143 msgid "Must be a valid number" msgstr "Musí být platné číslo" @@ -596,89 +600,89 @@ msgstr "Měna" msgid "Select currency from available options" msgstr "Vyberte měnu z dostupných možností" -#: InvenTree/serializers.py:436 +#: InvenTree/serializers.py:441 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:448 +#: InvenTree/serializers.py:453 msgid "Only superusers can create new users" msgstr "Pouze superuživatelé mohou vytvářet nové uživatele" -#: InvenTree/serializers.py:467 +#: InvenTree/serializers.py:472 msgid "Your account has been created." msgstr "Váš účet byl vytvořen." -#: InvenTree/serializers.py:469 +#: InvenTree/serializers.py:474 msgid "Please use the password reset function to login" msgstr "Pro přihlášení použijte funkci obnovení hesla" -#: InvenTree/serializers.py:476 +#: InvenTree/serializers.py:481 msgid "Welcome to InvenTree" msgstr "Vítejte v InvenTree" -#: InvenTree/serializers.py:537 +#: InvenTree/serializers.py:542 msgid "Filename" msgstr "Název souboru" -#: InvenTree/serializers.py:571 +#: InvenTree/serializers.py:576 msgid "Invalid value" msgstr "Neplatná hodnota" -#: InvenTree/serializers.py:591 +#: InvenTree/serializers.py:596 msgid "Data File" msgstr "Datový soubor" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:597 msgid "Select data file for upload" msgstr "Vyberte datový soubor k nahrání" -#: InvenTree/serializers.py:609 +#: InvenTree/serializers.py:614 msgid "Unsupported file type" msgstr "Nepodporovaný typ souboru" -#: InvenTree/serializers.py:615 +#: InvenTree/serializers.py:620 msgid "File is too large" msgstr "Soubor je příliš velký" -#: InvenTree/serializers.py:636 +#: InvenTree/serializers.py:641 msgid "No columns found in file" msgstr "V souboru nebyly nalezeny žádné sloupce" -#: InvenTree/serializers.py:639 +#: InvenTree/serializers.py:644 msgid "No data rows found in file" msgstr "V souboru nebyly nalezeny žádné řádky s daty" -#: InvenTree/serializers.py:752 +#: InvenTree/serializers.py:757 msgid "No data rows provided" msgstr "Nebyly zadány žádné řádky s daty" -#: InvenTree/serializers.py:755 +#: InvenTree/serializers.py:760 msgid "No data columns supplied" msgstr "Nebyly zadány žádné sloupce s daty" -#: InvenTree/serializers.py:822 +#: InvenTree/serializers.py:827 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Chybí povinný sloupec: '{name}'" -#: InvenTree/serializers.py:831 +#: InvenTree/serializers.py:836 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Duplicitní sloupec: '{col}'" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:859 msgid "Remote Image" msgstr "Vzdálený obraz" -#: InvenTree/serializers.py:855 +#: InvenTree/serializers.py:860 msgid "URL of remote image file" msgstr "URL souboru vzdáleného obrázku" -#: InvenTree/serializers.py:873 +#: InvenTree/serializers.py:878 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:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "Kontrola procesů na pozadí se nezdařila" @@ -818,7 +822,7 @@ msgstr "Rozdělit od nadřazené položky" msgid "Split child item" msgstr "Rozdělit podřazený předmět" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 msgid "Merged stock items" msgstr "Sloučené položky zásob" @@ -838,7 +842,7 @@ msgstr "Výstup objednávky sestavení dokončen" msgid "Build order output rejected" msgstr "Výstup objednávky sestavení byl odmítnut" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 msgid "Consumed by build order" msgstr "Spotřebováno podle objednávky" @@ -938,14 +942,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:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "Spotřební materiál" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -960,7 +964,7 @@ msgid "Tracked" msgstr "Sledováno" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -985,7 +989,7 @@ msgstr "Dostupné" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "Vytvořit objednávku" @@ -1014,7 +1018,7 @@ msgstr "Referenční číslo objednávky" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1044,11 +1048,11 @@ msgstr "Příkaz sestavení pro který je toto sestavení přiděleno" #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1059,7 +1063,7 @@ msgstr "Příkaz sestavení pro který je toto sestavení přiděleno" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:267 stock/serializers.py:689 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1086,9 +1090,9 @@ msgstr "Příkaz sestavení pro který je toto sestavení přiděleno" #: templates/js/translated/sales_order.js:1598 #: templates/js/translated/sales_order.js:1796 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960 -#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054 -#: templates/js/translated/stock.js:3200 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 msgid "Part" msgstr "Díl" @@ -1146,8 +1150,8 @@ msgstr "Stav sestavení" msgid "Build status code" msgstr "Stavový kód sestavení" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Kód dávky" @@ -1242,53 +1246,53 @@ msgstr "Kód projektu" msgid "Project code for this build order" msgstr "Kód projektu pro objednávku sestavení" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Příkaz k sestavení {build} byl dokončen" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "Příkaz k sestavení byl dokončen" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "Nebyl specifikováno žádný výstup sestavení" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "Výstup sestavení je již dokončen" -#: build/models.py:789 +#: build/models.py:805 msgid "Build output does not match Build Order" msgstr "Výstup sestavení neodpovídá příkazu sestavení" -#: build/models.py:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 msgid "Quantity must be greater than zero" msgstr "Množství musí být vyšší než nula" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 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:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" msgstr "Vytvořit objekt" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1298,7 +1302,7 @@ msgstr "Vytvořit objekt" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:463 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1310,7 +1314,7 @@ msgstr "Vytvořit objekt" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1325,43 +1329,43 @@ msgstr "Vytvořit objekt" #: templates/js/translated/sales_order.js:1698 #: templates/js/translated/sales_order.js:1824 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 -#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985 -#: templates/js/translated/stock.js:3068 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "Množství" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" msgstr "Vyžadované množství pro objednávku" -#: build/models.py:1381 +#: build/models.py:1397 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:1390 +#: build/models.py:1406 #, 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:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "Skladová položka je nadměrně zabrána" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "Zabrané množství musí být větší než nula" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "Množství musí být 1 pro zřetězený sklad" -#: build/models.py:1473 +#: build/models.py:1489 msgid "Selected stock item does not match BOM line" msgstr "Vybraná položka zásob neodpovídá řádku BOM" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 @@ -1372,23 +1376,23 @@ msgstr "Vybraná položka zásob neodpovídá řádku BOM" #: templates/js/translated/sales_order.js:1605 #: templates/js/translated/sales_order.js:1692 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 -#: templates/js/translated/stock.js:2941 +#: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "Skladové položky" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "Zdrojová skladová položka" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "Skladové množství pro sestavení" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "Instalovat do" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "" @@ -1425,8 +1429,8 @@ msgstr "" msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 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" @@ -1451,10 +1455,10 @@ msgstr "" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1466,8 +1470,8 @@ msgstr "" #: templates/js/translated/sales_order.js:1627 #: templates/js/translated/sales_order.js:1706 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164 -#: templates/js/translated/stock.js:2835 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 msgid "Location" msgstr "Lokace" @@ -1493,16 +1497,16 @@ msgstr "" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 #: templates/js/translated/purchase_order.js:1723 #: templates/js/translated/return_order.js:331 #: templates/js/translated/sales_order.js:819 -#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959 -#: templates/js/translated/stock.js:3084 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 msgid "Status" msgstr "Stav" @@ -1566,7 +1570,7 @@ msgstr "" msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "" @@ -1602,11 +1606,11 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1065 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" @@ -1619,7 +1623,7 @@ msgstr "" msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "" @@ -1659,44 +1663,45 @@ msgstr "Volitelné položky" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 #: stock/api.py:745 msgid "BOM Item" msgstr "" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1862,7 +1867,7 @@ msgstr "" #: templates/js/translated/pricing.js:929 #: templates/js/translated/sales_order.js:769 #: templates/js/translated/sales_order.js:992 -#: templates/js/translated/stock.js:2888 +#: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "" @@ -1920,8 +1925,8 @@ msgstr "" #: templates/js/translated/build.js:1377 #: templates/js/translated/model_renderers.js:235 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153 -#: templates/js/translated/stock.js:3091 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" @@ -1990,27 +1995,31 @@ msgstr "" msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:210 -msgid "Incomplete Build Outputs" -msgstr "" - -#: build/templates/build/detail.html:214 -msgid "Create new build output" +#: 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:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2026,15 +2035,15 @@ msgstr "" msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" msgstr "" @@ -2112,1390 +2121,1414 @@ msgstr "" msgid "User or group responsible for this project" msgstr "" -#: common/models.py:737 +#: common/models.py:744 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:741 +#: common/models.py:748 msgid "Settings value" msgstr "" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "" -#: common/models.py:1231 +#: common/models.py:1238 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "Jméno společnosti" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "Výchozí měna" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1283 +#: common/models.py:1290 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "Stáhnout z URL" -#: common/models.py:1298 +#: common/models.py:1305 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "" -#: common/models.py:1305 +#: common/models.py:1312 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "" -#: common/models.py:1332 +#: common/models.py:1339 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "" -#: common/models.py:1339 +#: common/models.py:1346 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "" -#: common/models.py:1346 +#: common/models.py:1353 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1352 +#: common/models.py:1359 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1360 +#: common/models.py:1367 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1369 +#: common/models.py:1376 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1378 +#: common/models.py:1385 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1386 +#: common/models.py:1393 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1399 +#: common/models.py:1406 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "" -#: common/models.py:1411 +#: common/models.py:1418 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1415 +#: common/models.py:1422 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1421 +#: common/models.py:1428 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1427 +#: common/models.py:1434 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1433 +#: common/models.py:1440 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1439 +#: common/models.py:1446 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "Možné zakoupit" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "Díly jsou zakoupitelné ve výchozím nastavení" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "Prodejné" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "Díly jsou prodejné ve výchozím nastavení" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "Díly jsou sledovatelné ve výchozím nastavení" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "Díly jsou nehmotné (virtuální) ve výchozím nastavení" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "Zobrazit Import v zobrazeních" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "Zobrazit související díly" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" msgstr "Zobrazit související díly pro díl" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "Počáteční údaje zásob" -#: common/models.py:1505 +#: common/models.py:1512 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:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Počáteční údaje dodavatele" -#: common/models.py:1512 +#: common/models.py:1519 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:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "Formát zobrazení jména dílu" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "Formát pro zobrazení názvu dílu" -#: common/models.py:1525 +#: common/models.py:1532 msgid "Part Category Default Icon" msgstr "Výchozí ikona kategorie dílu" -#: common/models.py:1526 +#: common/models.py:1533 msgid "Part category default icon (empty means no icon)" msgstr "Výchozí ikona kategorie dílu (prázdné znamená bez ikony)" -#: common/models.py:1530 +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1532 +#: common/models.py:1539 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "Minimální počet desetinných míst u cen" -#: common/models.py:1540 +#: common/models.py:1547 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:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "Maximální počet desetinných míst u cen" -#: common/models.py:1548 +#: common/models.py:1555 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:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "Použít ceny dodavatele" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "Přepsání historie nákupu" -#: common/models.py:1564 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1580 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1588 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1595 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1603 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1611 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1618 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1632 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1645 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: 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:202 msgid "Page Size" msgstr "Velikost stránky" -#: common/models.py:1651 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "Výchozí velikost stránky pro PDF reporty" -#: common/models.py:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "Povolit testovací reporty" -#: common/models.py:1657 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "Povolit generování zkušebních reportů" -#: common/models.py:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "Připojit testovací reporty" -#: common/models.py:1664 +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1671 +#: 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:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "Automaticky vyplnit sériová čísla" -#: common/models.py:1677 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "Automaticky vyplnit sériová čísla ve formulářích" -#: common/models.py:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "Odstranit vyčerpané zásoby" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "Určuje výchozí chování, když je vyčerpána skladová položka" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1692 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1704 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1711 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1719 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1725 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1731 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1736 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1741 +#: 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 "Build Order Reference Pattern" msgstr "" -#: common/models.py:1743 +#: common/models.py:1764 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1757 +#: common/models.py:1778 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1765 +#: common/models.py:1786 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1773 +#: common/models.py:1794 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1780 +#: common/models.py:1801 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1787 +#: common/models.py:1808 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1795 +#: common/models.py:1816 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1803 +#: common/models.py:1824 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1811 +#: common/models.py:1832 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "" -#: common/models.py:1825 +#: common/models.py:1846 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1838 +#: common/models.py:1859 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1844 +#: common/models.py:1865 msgid "Email required" msgstr "" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1852 +#: common/models.py:1873 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "" -#: common/models.py:1859 +#: common/models.py:1880 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "" -#: common/models.py:1865 +#: common/models.py:1886 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "" -#: common/models.py:1879 +#: common/models.py:1900 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1892 +#: common/models.py:1913 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1929 +#: common/models.py:1950 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "" -#: common/models.py:1936 +#: common/models.py:1957 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1950 +#: common/models.py:1971 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1958 +#: common/models.py:1979 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1966 +#: common/models.py:1987 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1974 +#: common/models.py:1995 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2029 common/models.py:2429 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2043 +#: common/models.py:2070 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2045 +#: common/models.py:2072 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2051 +#: common/models.py:2078 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2052 +#: common/models.py:2079 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2057 +#: common/models.py:2084 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2058 +#: common/models.py:2085 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2063 +#: common/models.py:2090 msgid "Show latest parts" msgstr "" -#: common/models.py:2064 +#: common/models.py:2091 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2069 +#: common/models.py:2096 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2070 +#: common/models.py:2097 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2075 +#: common/models.py:2102 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2076 +#: common/models.py:2103 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2081 +#: common/models.py:2108 msgid "Show low stock" msgstr "" -#: common/models.py:2082 +#: common/models.py:2109 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2087 +#: common/models.py:2114 msgid "Show depleted stock" msgstr "" -#: common/models.py:2088 +#: common/models.py:2115 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2093 +#: common/models.py:2120 msgid "Show needed stock" msgstr "" -#: common/models.py:2094 +#: common/models.py:2121 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2099 +#: common/models.py:2126 msgid "Show expired stock" msgstr "" -#: common/models.py:2100 +#: common/models.py:2127 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2105 +#: common/models.py:2132 msgid "Show stale stock" msgstr "" -#: common/models.py:2106 +#: common/models.py:2133 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2111 +#: common/models.py:2138 msgid "Show pending builds" msgstr "" -#: common/models.py:2112 +#: common/models.py:2139 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2117 +#: common/models.py:2144 msgid "Show overdue builds" msgstr "" -#: common/models.py:2118 +#: common/models.py:2145 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2123 +#: common/models.py:2150 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2124 +#: common/models.py:2151 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2129 +#: common/models.py:2156 msgid "Show overdue POs" msgstr "" -#: common/models.py:2130 +#: common/models.py:2157 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2135 +#: common/models.py:2162 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2136 +#: common/models.py:2163 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2141 +#: common/models.py:2168 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2142 +#: common/models.py:2169 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2147 +#: common/models.py:2174 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2148 +#: common/models.py:2175 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2153 +#: common/models.py:2180 msgid "Show News" msgstr "" -#: common/models.py:2154 +#: common/models.py:2181 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2159 +#: common/models.py:2186 msgid "Inline label display" msgstr "" -#: common/models.py:2161 +#: common/models.py:2188 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2167 +#: common/models.py:2194 msgid "Default label printer" msgstr "" -#: common/models.py:2169 +#: common/models.py:2196 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2175 +#: common/models.py:2202 msgid "Inline report display" msgstr "" -#: common/models.py:2177 +#: common/models.py:2204 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2183 +#: common/models.py:2210 msgid "Search Parts" msgstr "" -#: common/models.py:2184 +#: common/models.py:2211 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2189 +#: common/models.py:2216 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2190 +#: common/models.py:2217 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2195 +#: common/models.py:2222 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2196 +#: common/models.py:2223 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2201 +#: common/models.py:2228 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2202 +#: common/models.py:2229 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2207 +#: common/models.py:2234 msgid "Search Categories" msgstr "" -#: common/models.py:2208 +#: common/models.py:2235 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2213 +#: common/models.py:2240 msgid "Search Stock" msgstr "" -#: common/models.py:2214 +#: common/models.py:2241 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2219 +#: common/models.py:2246 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2221 +#: common/models.py:2248 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2227 +#: common/models.py:2254 msgid "Search Locations" msgstr "" -#: common/models.py:2228 +#: common/models.py:2255 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2233 +#: common/models.py:2260 msgid "Search Companies" msgstr "" -#: common/models.py:2234 +#: common/models.py:2261 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2239 +#: common/models.py:2266 msgid "Search Build Orders" msgstr "" -#: common/models.py:2240 +#: common/models.py:2267 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2245 +#: common/models.py:2272 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2246 +#: common/models.py:2273 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2251 +#: common/models.py:2278 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2253 +#: common/models.py:2280 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2259 +#: common/models.py:2286 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2260 +#: common/models.py:2287 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2265 +#: common/models.py:2292 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2267 +#: common/models.py:2294 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2273 +#: common/models.py:2300 msgid "Search Return Orders" msgstr "" -#: common/models.py:2274 +#: common/models.py:2301 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2279 +#: common/models.py:2306 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2281 +#: common/models.py:2308 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2287 +#: common/models.py:2314 msgid "Search Preview Results" msgstr "" -#: common/models.py:2289 +#: common/models.py:2316 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2295 +#: common/models.py:2322 msgid "Regex Search" msgstr "" -#: common/models.py:2296 +#: common/models.py:2323 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2301 +#: common/models.py:2328 msgid "Whole Word Search" msgstr "" -#: common/models.py:2302 +#: common/models.py:2329 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2307 +#: common/models.py:2334 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2308 +#: common/models.py:2335 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2313 +#: common/models.py:2340 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2314 +#: common/models.py:2341 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2319 +#: common/models.py:2346 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2320 +#: common/models.py:2347 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2325 +#: common/models.py:2352 msgid "Date Format" msgstr "Formát data" -#: common/models.py:2326 +#: common/models.py:2353 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2366 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2340 +#: common/models.py:2367 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2372 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2347 +#: common/models.py:2374 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2353 +#: common/models.py:2380 msgid "Table String Length" msgstr "" -#: common/models.py:2355 +#: common/models.py:2382 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2361 +#: common/models.py:2388 msgid "Default part label template" msgstr "" -#: common/models.py:2362 +#: common/models.py:2389 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2367 +#: common/models.py:2394 msgid "Default stock item template" msgstr "" -#: common/models.py:2369 +#: common/models.py:2396 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2375 +#: common/models.py:2402 msgid "Default stock location label template" msgstr "" -#: common/models.py:2377 +#: common/models.py:2404 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2383 +#: common/models.py:2410 msgid "Receive error reports" msgstr "" -#: common/models.py:2384 +#: common/models.py:2411 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2389 +#: common/models.py:2416 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2417 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2460 msgid "Price break quantity" msgstr "" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3503,23 +3536,23 @@ msgstr "" msgid "Price" msgstr "Cena" -#: common/models.py:2441 +#: common/models.py:2468 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2639 common/models.py:2824 msgid "Endpoint" msgstr "" -#: common/models.py:2613 +#: common/models.py:2640 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2623 +#: common/models.py:2650 msgid "Name for this webhook" msgstr "" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3529,101 +3562,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2627 +#: common/models.py:2654 msgid "Is this webhook active" msgstr "" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2670 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2644 +#: common/models.py:2671 msgid "Token for access" msgstr "" -#: common/models.py:2652 +#: common/models.py:2679 msgid "Secret" msgstr "" -#: common/models.py:2653 +#: common/models.py:2680 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2761 +#: common/models.py:2788 msgid "Message ID" msgstr "" -#: common/models.py:2762 +#: common/models.py:2789 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2770 +#: common/models.py:2797 msgid "Host" msgstr "" -#: common/models.py:2771 +#: common/models.py:2798 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2779 +#: common/models.py:2806 msgid "Header" msgstr "" -#: common/models.py:2780 +#: common/models.py:2807 msgid "Header of this message" msgstr "" -#: common/models.py:2787 +#: common/models.py:2814 msgid "Body" msgstr "" -#: common/models.py:2788 +#: common/models.py:2815 msgid "Body of this message" msgstr "" -#: common/models.py:2798 +#: common/models.py:2825 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2803 +#: common/models.py:2830 msgid "Worked on" msgstr "" -#: common/models.py:2804 +#: common/models.py:2831 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2930 +#: common/models.py:2957 msgid "Id" msgstr "Id" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2959 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2963 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2965 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2967 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Read" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Was this news item read?" msgstr "" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2987 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3633,31 +3666,31 @@ msgstr "" msgid "Image" msgstr "Obrazek" -#: common/models.py:2960 +#: common/models.py:2987 msgid "Image file" msgstr "" -#: common/models.py:3002 +#: common/models.py:3029 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3021 +#: common/models.py:3048 msgid "Unit name" msgstr "" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3029 +#: common/models.py:3056 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3037 +#: common/models.py:3064 msgid "Unit definition" msgstr "" @@ -3961,7 +3994,7 @@ msgid "Link to address information (external)" msgstr "" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Základní díl" @@ -3972,7 +4005,7 @@ msgstr "Zvolte díl" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3987,7 +4020,7 @@ msgid "Select manufacturer" msgstr "Vyberte výrobce" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4022,9 +4055,9 @@ msgstr "Název parametru" #: company/models.py:615 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2438 templates/js/translated/company.js:1156 +#: stock/models.py:2441 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1519 msgid "Value" msgstr "Hodnota" @@ -4033,7 +4066,7 @@ msgid "Parameter value" msgstr "Hodnota parametru" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4059,7 +4092,7 @@ msgstr "" #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4076,7 +4109,7 @@ msgstr "" msgid "Select supplier" msgstr "" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "" @@ -4093,13 +4126,13 @@ msgid "Supplier part description" msgstr "" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:579 msgid "Note" msgstr "" @@ -4112,10 +4145,10 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 -#: templates/js/translated/stock.js:2387 +#: templates/js/translated/stock.js:2423 msgid "Packaging" msgstr "" @@ -4157,7 +4190,7 @@ msgstr "" msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "" @@ -4218,13 +4251,13 @@ msgstr "Smazat obrázek" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1100 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 #: templates/js/translated/return_order.js:296 #: templates/js/translated/sales_order.js:784 -#: templates/js/translated/stock.js:2923 +#: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:804 msgid "Customer" msgstr "Zákazník" @@ -4429,8 +4462,9 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "" @@ -4482,7 +4516,7 @@ msgstr "" #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2243 +#: templates/js/translated/stock.js:2279 msgid "Supplier Part" msgstr "" @@ -4528,7 +4562,7 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4577,15 +4611,17 @@ msgstr "" msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 -#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:193 msgid "Stock Items" msgstr "" @@ -4639,8 +4675,8 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" @@ -4665,7 +4701,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "" @@ -4679,8 +4715,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "" @@ -4821,7 +4857,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1674 -#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "" @@ -4830,7 +4866,7 @@ msgstr "" #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 -#: templates/js/translated/stock.js:2905 +#: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "" @@ -4838,11 +4874,11 @@ msgstr "" msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -5029,9 +5065,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2274 +#: templates/js/translated/stock.js:2310 msgid "Purchase Price" msgstr "" @@ -5084,8 +5120,8 @@ msgstr "" msgid "User who checked this shipment" msgstr "" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "" @@ -5133,7 +5169,7 @@ msgstr "" msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "" @@ -5207,159 +5243,159 @@ msgstr "" msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:610 +#: order/serializers.py:632 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1677 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "" @@ -5733,7 +5769,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" @@ -5763,12 +5799,12 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5780,12 +5816,12 @@ msgstr "" #: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 -#: templates/js/translated/stock.js:1999 +#: templates/js/translated/stock.js:2035 msgid "IPN" msgstr "" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" @@ -5861,10 +5897,10 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -5885,17 +5921,17 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3897 msgid "Part IPN" msgstr "" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5973,8 +6009,8 @@ msgstr "" msgid "This option must be selected" msgstr "" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5982,12 +6018,17 @@ msgstr "" msgid "Category" msgstr "" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5995,7 +6036,7 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -6010,7 +6051,8 @@ msgstr "" msgid "Default location for parts in this category" msgstr "" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 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" @@ -6076,7 +6118,7 @@ msgstr "" msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3896 msgid "Part name" msgstr "" @@ -6358,7 +6400,7 @@ msgstr "" #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1732 -#: templates/js/translated/stock.js:2785 +#: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" @@ -6410,586 +6452,602 @@ msgstr "" msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3448 -msgid "Test with this name already exists for this part" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "" -#: part/models.py:3496 +#: part/models.py:3505 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "" -#: part/models.py:3503 +#: part/models.py:3512 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3847 +#: part/models.py:3856 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3885 +#: part/models.py:3894 msgid "Part ID or part name" msgstr "" -#: part/models.py:3886 +#: part/models.py:3895 msgid "Unique part ID value" msgstr "" -#: part/models.py:3888 +#: part/models.py:3897 msgid "Part IPN value" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "Level" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "BOM level" msgstr "" -#: part/models.py:3979 +#: part/models.py:3988 msgid "Select parent part" msgstr "" -#: part/models.py:3989 +#: part/models.py:3998 msgid "Sub part" msgstr "" -#: part/models.py:3990 +#: part/models.py:3999 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4001 +#: part/models.py:4010 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4007 +#: part/models.py:4016 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4013 +#: part/models.py:4022 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4029 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4021 +#: part/models.py:4030 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4028 +#: part/models.py:4037 msgid "BOM item reference" msgstr "" -#: part/models.py:4036 +#: part/models.py:4045 msgid "BOM item notes" msgstr "" -#: part/models.py:4042 +#: part/models.py:4051 msgid "Checksum" msgstr "" -#: part/models.py:4043 +#: part/models.py:4052 msgid "BOM line checksum" msgstr "" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4057 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4049 +#: part/models.py:4058 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4063 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:4055 +#: part/models.py:4064 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4069 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4061 +#: part/models.py:4070 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4146 stock/models.py:649 +#: part/models.py:4155 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4165 part/models.py:4167 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4298 +#: part/models.py:4307 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4319 +#: part/models.py:4328 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4332 +#: part/models.py:4341 msgid "Parent BOM item" msgstr "" -#: part/models.py:4340 +#: part/models.py:4349 msgid "Substitute part" msgstr "" -#: part/models.py:4356 +#: part/models.py:4365 msgid "Part 1" msgstr "" -#: part/models.py:4364 +#: part/models.py:4373 msgid "Part 2" msgstr "" -#: part/models.py:4365 +#: part/models.py:4374 msgid "Select Related Part" msgstr "" -#: part/models.py:4384 +#: part/models.py:4393 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4389 +#: part/models.py:4398 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:432 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:480 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1104 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1078 +#: part/serializers.py:1114 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1088 +#: part/serializers.py:1124 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1647 +#: part/serializers.py:1693 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1659 +#: part/serializers.py:1705 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1694 +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "" @@ -7147,7 +7205,7 @@ msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/stock.js:2179 users/models.py:191 +#: templates/js/translated/stock.js:2215 users/models.py:191 msgid "Stocktake" msgstr "" @@ -7221,7 +7279,7 @@ msgid "Validate BOM" msgstr "" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "" @@ -7405,7 +7463,7 @@ msgstr "" msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "" @@ -7509,7 +7567,7 @@ msgstr "" #: templates/InvenTree/settings/sidebar.html:51 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 -#: templates/js/translated/stock.js:2033 templates/navbar.html:31 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7555,7 +7613,7 @@ msgstr "" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 -#: templates/js/translated/stock.js:2209 +#: templates/js/translated/stock.js:2245 msgid "Last Updated" msgstr "" @@ -7999,7 +8057,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "" @@ -8307,16 +8365,16 @@ msgstr "" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "" @@ -8336,103 +8394,111 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" msgstr "" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" msgstr "" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8499,12 +8565,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1492 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Result" msgstr "" @@ -8531,7 +8597,7 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:168 #: stock/admin.py:162 templates/js/translated/stock.js:700 -#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110 msgid "Serial" msgstr "" @@ -8615,7 +8681,7 @@ msgstr "" #: stock/admin.py:256 stock/models.py:886 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2193 users/models.py:113 +#: templates/js/translated/stock.js:2229 users/models.py:113 msgid "Expiry Date" msgstr "" @@ -8713,7 +8779,7 @@ msgstr "" msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:174 templates/js/translated/stock.js:2745 +#: stock/models.py:174 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" @@ -8722,7 +8788,7 @@ msgstr "" msgid "This is an external stock location" msgstr "" -#: stock/models.py:181 templates/js/translated/stock.js:2754 +#: stock/models.py:181 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" @@ -8739,7 +8805,7 @@ msgstr "" msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:290 msgid "Stock item cannot be created for virtual parts" msgstr "" @@ -8784,7 +8850,7 @@ msgstr "" msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1351 msgid "Packaging this stock item is stored in" msgstr "" @@ -8796,7 +8862,7 @@ msgstr "" msgid "Serial number for this item" msgstr "" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1334 msgid "Batch code for this stock item" msgstr "" @@ -8873,7 +8939,7 @@ msgstr "" msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:529 msgid "Serial numbers already exist" msgstr "" @@ -8905,7 +8971,7 @@ msgstr "" msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1240 msgid "Duplicate stock items" msgstr "" @@ -8929,207 +8995,236 @@ msgstr "" msgid "Entry notes" msgstr "" -#: stock/models.py:2399 +#: stock/models.py:2402 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2405 +#: stock/models.py:2408 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Test result" msgstr "" -#: stock/models.py:2439 +#: stock/models.py:2442 msgid "Test output value" msgstr "" -#: stock/models.py:2447 +#: stock/models.py:2450 msgid "Test result attachment" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2454 msgid "Test notes" msgstr "" -#: stock/serializers.py:96 +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "" + +#: stock/models.py:2463 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2469 +msgid "Started" +msgstr "" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:100 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:119 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 +#: stock/serializers.py:151 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:184 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:267 +#: stock/serializers.py:282 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:380 +#: stock/serializers.py:402 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:442 +#: stock/serializers.py:464 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:455 +#: stock/serializers.py:477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:462 +#: stock/serializers.py:484 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:480 +#: stock/serializers.py:502 msgid "Optional note field" msgstr "" -#: stock/serializers.py:490 +#: stock/serializers.py:512 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:545 +#: stock/serializers.py:567 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:574 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:553 +#: stock/serializers.py:575 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:566 +#: stock/serializers.py:588 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:596 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:581 +#: stock/serializers.py:607 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:620 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:628 +#: stock/serializers.py:655 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:663 +#: stock/serializers.py:690 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:676 +#: stock/serializers.py:703 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:693 +#: stock/serializers.py:720 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:724 +#: stock/serializers.py:751 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:761 +#: stock/serializers.py:788 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:767 +#: stock/serializers.py:794 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1036 +#: stock/serializers.py:1069 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1040 +#: stock/serializers.py:1073 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1044 +#: stock/serializers.py:1077 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1068 +#: stock/serializers.py:1101 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1074 +#: stock/serializers.py:1107 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1082 +#: stock/serializers.py:1115 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1125 stock/serializers.py:1379 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1171 +#: stock/serializers.py:1204 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1176 +#: stock/serializers.py:1209 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1177 +#: stock/serializers.py:1210 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1182 +#: stock/serializers.py:1215 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1183 +#: stock/serializers.py:1216 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1193 +#: stock/serializers.py:1226 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1260 +#: stock/serializers.py:1293 msgid "No Change" msgstr "" -#: stock/serializers.py:1289 +#: stock/serializers.py:1322 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1308 +#: stock/serializers.py:1341 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1336 +#: stock/serializers.py:1369 msgid "Stock transaction notes" msgstr "" @@ -9154,7 +9249,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 msgid "Delete Test Data" msgstr "" @@ -9170,15 +9265,15 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:274 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 msgid "Add Test Result" msgstr "" @@ -9201,17 +9296,17 @@ msgid "Stock adjustment actions" msgstr "" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 msgid "Count stock" msgstr "" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:1803 msgid "Add stock" msgstr "" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1776 +#: templates/js/translated/stock.js:1812 msgid "Remove stock" msgstr "" @@ -9220,12 +9315,12 @@ msgid "Serialize stock" msgstr "" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 msgid "Transfer stock" msgstr "" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1884 msgid "Assign to customer" msgstr "" @@ -9364,7 +9459,7 @@ msgid "No stocktake performed" msgstr "" #: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1915 +#: templates/js/translated/stock.js:1951 msgid "stock item" msgstr "" @@ -9469,7 +9564,7 @@ msgid "New Location" msgstr "" #: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2536 +#: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" @@ -10063,7 +10158,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:37 msgid "New Location Type" msgstr "" @@ -10120,7 +10215,7 @@ msgstr "" msgid "Stock Settings" msgstr "" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:33 msgid "Stock Location Types" msgstr "" @@ -10662,7 +10757,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "" @@ -10676,7 +10771,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "" @@ -11051,62 +11146,66 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "" @@ -11389,7 +11488,7 @@ msgstr "" #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 -#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11401,7 +11500,7 @@ msgstr "" msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006 +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" @@ -11449,29 +11548,29 @@ msgstr "" msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "" @@ -11804,15 +11903,15 @@ msgstr "" msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3087 +#: templates/js/translated/forms.js:3103 msgid "Select Columns" msgstr "" @@ -12289,7 +12388,7 @@ msgid "No category" msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 -#: templates/js/translated/stock.js:2633 +#: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" @@ -12301,7 +12400,7 @@ msgstr "" msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" @@ -12313,64 +12412,64 @@ msgstr "" msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" @@ -12907,7 +13006,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1737 +#: templates/js/translated/stock.js:1773 msgid "Shipped to customer" msgstr "" @@ -13165,7 +13264,7 @@ msgstr "" msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" @@ -13189,248 +13288,256 @@ msgstr "" msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1440 +#: templates/js/translated/stock.js:1447 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1443 +#: templates/js/translated/stock.js:1450 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1466 +#: templates/js/translated/stock.js:1473 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1530 +#: templates/js/translated/stock.js:1537 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1677 +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1733 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1729 +#: templates/js/translated/stock.js:1765 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1769 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1741 +#: templates/js/translated/stock.js:1777 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1747 +#: templates/js/translated/stock.js:1783 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1839 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1848 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:1897 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1916 +#: templates/js/translated/stock.js:1952 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1921 +#: templates/js/translated/stock.js:1957 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1932 +#: templates/js/translated/stock.js:1968 msgid "Stock Actions" msgstr "" -#: templates/js/translated/stock.js:1976 +#: templates/js/translated/stock.js:2012 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2054 +#: templates/js/translated/stock.js:2090 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2059 +#: templates/js/translated/stock.js:2095 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2062 +#: templates/js/translated/stock.js:2098 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2065 +#: templates/js/translated/stock.js:2101 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2067 +#: templates/js/translated/stock.js:2103 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2069 +#: templates/js/translated/stock.js:2105 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2072 +#: templates/js/translated/stock.js:2108 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2074 +#: templates/js/translated/stock.js:2110 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2114 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2080 +#: templates/js/translated/stock.js:2116 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2085 +#: templates/js/translated/stock.js:2121 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2087 +#: templates/js/translated/stock.js:2123 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2089 +#: templates/js/translated/stock.js:2125 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2129 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2258 +#: templates/js/translated/stock.js:2294 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2305 +#: templates/js/translated/stock.js:2341 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2433 +#: templates/js/translated/stock.js:2469 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2573 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2692 +#: templates/js/translated/stock.js:2728 msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2810 +#: templates/js/translated/stock.js:2846 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2814 +#: templates/js/translated/stock.js:2850 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:2862 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2848 +#: templates/js/translated/stock.js:2884 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2865 +#: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2880 +#: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2897 +#: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2914 +#: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3005 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2977 +#: templates/js/translated/stock.js:3013 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:3049 +#: templates/js/translated/stock.js:3085 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139 +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:3161 +#: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:3182 +#: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:3183 +#: 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:3185 +#: 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:3186 +#: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:3187 +#: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:3188 +#: 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:3201 +#: templates/js/translated/stock.js:3237 msgid "Select part to install" msgstr "" -#: templates/js/translated/stock.js:3264 +#: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" msgstr "" -#: templates/js/translated/stock.js:3277 +#: templates/js/translated/stock.js:3313 msgid "Selected stock items" msgstr "" -#: templates/js/translated/stock.js:3281 +#: templates/js/translated/stock.js:3317 msgid "Change Stock Status" msgstr "" diff --git a/InvenTree/locale/da/LC_MESSAGES/django.po b/InvenTree/locale/da/LC_MESSAGES/django.po index fdce570ffb..62ee7ebab9 100644 --- a/InvenTree/locale/da/LC_MESSAGES/django.po +++ b/InvenTree/locale/da/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 04:05+0000\n" -"PO-Revision-Date: 2024-02-28 07:23\n" +"POT-Creation-Date: 2024-03-19 01:26+0000\n" +"PO-Revision-Date: 2024-03-19 11:51\n" "Last-Translator: \n" "Language-Team: Danish\n" "Language: da_DK\n" @@ -30,20 +30,20 @@ msgstr "Bruger har ikke tilladelse til at se denne model" msgid "Invalid unit provided ({unit})" msgstr "" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "Ingen værdi angivet" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "Kunne ikke konvertere {original} til {unit}" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" msgstr "Ugyldigt antal angivet" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" msgstr "Ugyldigt antal angivet ({exc})" @@ -64,18 +64,18 @@ msgstr "Angiv dato" #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 #: templates/js/translated/return_order.js:776 #: templates/js/translated/sales_order.js:1067 #: templates/js/translated/sales_order.js:1982 -#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 msgid "Notes" msgstr "Bemærkninger" @@ -132,42 +132,42 @@ msgstr "Det angivne e-mail domæne er ikke godkendt." msgid "Registration is disabled." msgstr "Registrering er deaktiveret." -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "Ugyldigt antal angivet" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "Serienummer streng er tom" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "Duplikeret serienummer" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "Ugyldig gruppesekvens: {group}" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "Ingen serienumre fundet" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "Fjern HTML-tags fra denne værdi" @@ -203,131 +203,135 @@ msgstr "Fjernserver returnerede tomt svar" msgid "Supplied URL is not a valid image file" msgstr "Angivet URL er ikke en gyldig billedfil" -#: InvenTree/locales.py:16 +#: InvenTree/locales.py:18 msgid "Bulgarian" msgstr "Bulgarsk" -#: InvenTree/locales.py:17 +#: InvenTree/locales.py:19 msgid "Czech" msgstr "Tjekkisk" -#: InvenTree/locales.py:18 +#: InvenTree/locales.py:20 msgid "Danish" msgstr "Dansk" -#: InvenTree/locales.py:19 +#: InvenTree/locales.py:21 msgid "German" msgstr "Tysk" -#: InvenTree/locales.py:20 +#: InvenTree/locales.py:22 msgid "Greek" msgstr "Græsk" -#: InvenTree/locales.py:21 +#: InvenTree/locales.py:23 msgid "English" msgstr "Engelsk" -#: InvenTree/locales.py:22 +#: InvenTree/locales.py:24 msgid "Spanish" msgstr "Spansk" -#: InvenTree/locales.py:23 +#: InvenTree/locales.py:25 msgid "Spanish (Mexican)" msgstr "Spansk (Mexikansk)" -#: InvenTree/locales.py:24 +#: InvenTree/locales.py:26 msgid "Farsi / Persian" msgstr "Farsi / Persisk" -#: InvenTree/locales.py:25 +#: InvenTree/locales.py:27 msgid "Finnish" msgstr "Finsk" -#: InvenTree/locales.py:26 +#: InvenTree/locales.py:28 msgid "French" msgstr "Fransk" -#: InvenTree/locales.py:27 +#: InvenTree/locales.py:29 msgid "Hebrew" msgstr "Hebraisk" -#: InvenTree/locales.py:28 +#: InvenTree/locales.py:30 msgid "Hindi" msgstr "Hindi" -#: InvenTree/locales.py:29 +#: InvenTree/locales.py:31 msgid "Hungarian" msgstr "Ungarsk" -#: InvenTree/locales.py:30 +#: InvenTree/locales.py:32 msgid "Italian" msgstr "Italiensk" -#: InvenTree/locales.py:31 +#: InvenTree/locales.py:33 msgid "Japanese" msgstr "Japansk" -#: InvenTree/locales.py:32 +#: InvenTree/locales.py:34 msgid "Korean" msgstr "Koreansk" -#: InvenTree/locales.py:33 +#: InvenTree/locales.py:35 +msgid "Latvian" +msgstr "" + +#: InvenTree/locales.py:36 msgid "Dutch" msgstr "Hollandsk" -#: InvenTree/locales.py:34 +#: InvenTree/locales.py:37 msgid "Norwegian" msgstr "Norsk" -#: InvenTree/locales.py:35 +#: InvenTree/locales.py:38 msgid "Polish" msgstr "Polsk" -#: InvenTree/locales.py:36 +#: InvenTree/locales.py:39 msgid "Portuguese" msgstr "Portugisisk" -#: InvenTree/locales.py:37 +#: InvenTree/locales.py:40 msgid "Portuguese (Brazilian)" msgstr "Portugisisk (Brasilien)" -#: InvenTree/locales.py:38 +#: InvenTree/locales.py:41 msgid "Russian" msgstr "Russisk" -#: InvenTree/locales.py:39 +#: InvenTree/locales.py:42 msgid "Slovak" msgstr "" -#: InvenTree/locales.py:40 +#: InvenTree/locales.py:43 msgid "Slovenian" msgstr "Slovensk" -#: InvenTree/locales.py:41 +#: InvenTree/locales.py:44 msgid "Serbian" msgstr "Serbisk" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:45 msgid "Swedish" msgstr "Svensk" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:46 msgid "Thai" msgstr "Thailandsk" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:47 msgid "Turkish" msgstr "Tyrkisk" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:48 msgid "Vietnamese" msgstr "Vietnamesisk" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:49 msgid "Chinese (Simplified)" msgstr "Kinesisk (forenklet)" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:50 msgid "Chinese (Traditional)" msgstr "Kinesisk (traditionelt)" @@ -391,7 +395,7 @@ msgstr "Manglende fil" msgid "Missing external link" msgstr "Manglende eksternt link" -#: InvenTree/models.py:559 stock/models.py:2446 +#: InvenTree/models.py:559 stock/models.py:2449 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -401,7 +405,7 @@ msgstr "Vedhæftning" msgid "Select file to attach" msgstr "Vælg fil, der skal vedhæftes" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -432,13 +436,13 @@ msgstr "Kommentar" msgid "File comment" msgstr "Fil kommentar" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:3000 users/models.py:100 +#: templates/js/translated/stock.js:3036 users/models.py:100 msgid "User" msgstr "Bruger" @@ -479,10 +483,10 @@ msgstr "" msgid "Invalid choice" msgstr "Ugyldigt valg" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -495,7 +499,7 @@ msgstr "Ugyldigt valg" #: templates/js/translated/company.js:1155 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Navn" @@ -506,10 +510,10 @@ msgstr "Navn" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -523,7 +527,7 @@ msgstr "Navn" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -531,8 +535,8 @@ msgstr "Navn" #: templates/js/translated/return_order.js:314 #: templates/js/translated/sales_order.js:802 #: templates/js/translated/sales_order.js:1812 -#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021 -#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "Beskrivelse" @@ -545,7 +549,7 @@ msgid "parent" msgstr "overordnet" #: InvenTree/models.py:916 templates/js/translated/part.js:2794 -#: templates/js/translated/stock.js:2721 +#: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Sti" @@ -581,7 +585,7 @@ msgstr "Serverfejl" msgid "An error has been logged by the server." msgstr "En fejl blev logget af serveren." -#: InvenTree/serializers.py:62 part/models.py:4134 +#: InvenTree/serializers.py:62 part/models.py:4143 msgid "Must be a valid number" msgstr "Skal være et gyldigt tal" @@ -596,89 +600,89 @@ msgstr "Valuta" msgid "Select currency from available options" msgstr "Vælg valuta fra tilgængelige muligheder" -#: InvenTree/serializers.py:436 +#: InvenTree/serializers.py:441 msgid "You do not have permission to change this user role." msgstr "Du har ikke tilladelse til at ændre denne brugerrolle." -#: InvenTree/serializers.py:448 +#: InvenTree/serializers.py:453 msgid "Only superusers can create new users" msgstr "Kun superbrugere kan oprette nye brugere" -#: InvenTree/serializers.py:467 +#: InvenTree/serializers.py:472 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:469 +#: InvenTree/serializers.py:474 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:476 +#: InvenTree/serializers.py:481 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:537 +#: InvenTree/serializers.py:542 msgid "Filename" msgstr "Filnavn" -#: InvenTree/serializers.py:571 +#: InvenTree/serializers.py:576 msgid "Invalid value" msgstr "Ugyldig værdi" -#: InvenTree/serializers.py:591 +#: InvenTree/serializers.py:596 msgid "Data File" msgstr "Datafil" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:597 msgid "Select data file for upload" msgstr "Vælg datafilen til upload" -#: InvenTree/serializers.py:609 +#: InvenTree/serializers.py:614 msgid "Unsupported file type" msgstr "Filtype ikke understøttet" -#: InvenTree/serializers.py:615 +#: InvenTree/serializers.py:620 msgid "File is too large" msgstr "Filen er for stor" -#: InvenTree/serializers.py:636 +#: InvenTree/serializers.py:641 msgid "No columns found in file" msgstr "Ingen kolonner fundet i fil" -#: InvenTree/serializers.py:639 +#: InvenTree/serializers.py:644 msgid "No data rows found in file" msgstr "Ingen datarækker fundet i fil" -#: InvenTree/serializers.py:752 +#: InvenTree/serializers.py:757 msgid "No data rows provided" msgstr "Ingen data-rækker angivet" -#: InvenTree/serializers.py:755 +#: InvenTree/serializers.py:760 msgid "No data columns supplied" msgstr "Ingen data-kolonner angivet" -#: InvenTree/serializers.py:822 +#: InvenTree/serializers.py:827 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Mangler påkrævet kolonne: '{name}'" -#: InvenTree/serializers.py:831 +#: InvenTree/serializers.py:836 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Duplikeret kolonne: '{col}'" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:859 msgid "Remote Image" msgstr "Eksternt billede" -#: InvenTree/serializers.py:855 +#: InvenTree/serializers.py:860 msgid "URL of remote image file" msgstr "URL til ekstern billedfil" -#: InvenTree/serializers.py:873 +#: InvenTree/serializers.py:878 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:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "Kontrol af baggrundstjeneste mislykkedes" @@ -818,7 +822,7 @@ msgstr "Opdel fra overordnet element" msgid "Split child item" msgstr "Opdel underordnet element" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 msgid "Merged stock items" msgstr "Flettede lagervarer" @@ -838,7 +842,7 @@ msgstr "Byggeorder output fuldført" msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 msgid "Consumed by build order" msgstr "Brugt efter byggeordre" @@ -938,14 +942,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:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "Forbrugsvare" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -960,7 +964,7 @@ msgid "Tracked" msgstr "Sporet" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -985,7 +989,7 @@ msgstr "Tilgængelig" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "Produktionsordre" @@ -1014,7 +1018,7 @@ msgstr "Produktionsordre reference" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1044,11 +1048,11 @@ msgstr "Produktionsordre som er tildelt denne produktion" #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1059,7 +1063,7 @@ msgstr "Produktionsordre som er tildelt denne produktion" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:267 stock/serializers.py:689 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1086,9 +1090,9 @@ msgstr "Produktionsordre som er tildelt denne produktion" #: templates/js/translated/sales_order.js:1598 #: templates/js/translated/sales_order.js:1796 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960 -#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054 -#: templates/js/translated/stock.js:3200 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 msgid "Part" msgstr "Del" @@ -1146,8 +1150,8 @@ msgstr "Produktions Status" msgid "Build status code" msgstr "Produktions statuskode" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Batch Kode" @@ -1242,53 +1246,53 @@ msgstr "" msgid "Project code for this build order" msgstr "" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Bygningsordre {build} er fuldført" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "En byggeordre er fuldført" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "" -#: build/models.py:789 +#: build/models.py:805 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" msgstr "" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1298,7 +1302,7 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:463 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1310,7 +1314,7 @@ msgstr "" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1325,43 +1329,43 @@ msgstr "" #: templates/js/translated/sales_order.js:1698 #: templates/js/translated/sales_order.js:1824 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 -#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985 -#: templates/js/translated/stock.js:3068 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1381 +#: build/models.py:1397 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1390 +#: build/models.py:1406 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1473 +#: build/models.py:1489 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 @@ -1372,23 +1376,23 @@ msgstr "" #: templates/js/translated/sales_order.js:1605 #: templates/js/translated/sales_order.js:1692 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 -#: templates/js/translated/stock.js:2941 +#: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "" @@ -1425,8 +1429,8 @@ msgstr "" msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" @@ -1451,10 +1455,10 @@ msgstr "" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1466,8 +1470,8 @@ msgstr "" #: templates/js/translated/sales_order.js:1627 #: templates/js/translated/sales_order.js:1706 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164 -#: templates/js/translated/stock.js:2835 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 msgid "Location" msgstr "" @@ -1493,16 +1497,16 @@ msgstr "" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 #: templates/js/translated/purchase_order.js:1723 #: templates/js/translated/return_order.js:331 #: templates/js/translated/sales_order.js:819 -#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959 -#: templates/js/translated/stock.js:3084 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 msgid "Status" msgstr "" @@ -1566,7 +1570,7 @@ msgstr "Accepter at lagervarer ikke er fuldt tildelt til denne byggeordre" msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "Accepter ufuldført" @@ -1602,11 +1606,11 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1065 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" @@ -1619,7 +1623,7 @@ msgstr "" msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "" @@ -1659,44 +1663,45 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 #: stock/api.py:745 msgid "BOM Item" msgstr "" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1862,7 +1867,7 @@ msgstr "" #: templates/js/translated/pricing.js:929 #: templates/js/translated/sales_order.js:769 #: templates/js/translated/sales_order.js:992 -#: templates/js/translated/stock.js:2888 +#: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "" @@ -1920,8 +1925,8 @@ msgstr "" #: templates/js/translated/build.js:1377 #: templates/js/translated/model_renderers.js:235 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153 -#: templates/js/translated/stock.js:3091 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" @@ -1990,27 +1995,31 @@ msgstr "" msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:210 -msgid "Incomplete Build Outputs" -msgstr "" - -#: build/templates/build/detail.html:214 -msgid "Create new build output" +#: 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:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2026,15 +2035,15 @@ msgstr "" msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" msgstr "" @@ -2112,1390 +2121,1414 @@ msgstr "" msgid "User or group responsible for this project" msgstr "" -#: common/models.py:737 +#: common/models.py:744 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:741 +#: common/models.py:748 msgid "Settings value" msgstr "" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "" -#: common/models.py:1231 +#: common/models.py:1238 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1283 +#: common/models.py:1290 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "" -#: common/models.py:1298 +#: common/models.py:1305 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "" -#: common/models.py:1305 +#: common/models.py:1312 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "" -#: common/models.py:1332 +#: common/models.py:1339 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "" -#: common/models.py:1339 +#: common/models.py:1346 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "" -#: common/models.py:1346 +#: common/models.py:1353 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1352 +#: common/models.py:1359 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1360 +#: common/models.py:1367 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1369 +#: common/models.py:1376 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1378 +#: common/models.py:1385 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1386 +#: common/models.py:1393 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1399 +#: common/models.py:1406 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "" -#: common/models.py:1411 +#: common/models.py:1418 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1415 +#: common/models.py:1422 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1421 +#: common/models.py:1428 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1427 +#: common/models.py:1434 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1433 +#: common/models.py:1440 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1439 +#: common/models.py:1446 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1505 +#: common/models.py:1512 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1512 +#: common/models.py:1519 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "" -#: common/models.py:1525 +#: common/models.py:1532 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1526 +#: common/models.py:1533 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1530 +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1532 +#: common/models.py:1539 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1540 +#: common/models.py:1547 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1548 +#: common/models.py:1555 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1564 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1580 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1588 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1595 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1603 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1611 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1618 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1632 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1645 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: 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:202 msgid "Page Size" msgstr "" -#: common/models.py:1651 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1657 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1664 +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1671 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1677 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1692 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1704 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1711 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1719 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1725 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1731 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1736 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1741 +#: 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 "Build Order Reference Pattern" msgstr "" -#: common/models.py:1743 +#: common/models.py:1764 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1757 +#: common/models.py:1778 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1765 +#: common/models.py:1786 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1773 +#: common/models.py:1794 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1780 +#: common/models.py:1801 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1787 +#: common/models.py:1808 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1795 +#: common/models.py:1816 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1803 +#: common/models.py:1824 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1811 +#: common/models.py:1832 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "" -#: common/models.py:1825 +#: common/models.py:1846 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1838 +#: common/models.py:1859 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1844 +#: common/models.py:1865 msgid "Email required" msgstr "" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1852 +#: common/models.py:1873 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "" -#: common/models.py:1859 +#: common/models.py:1880 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "" -#: common/models.py:1865 +#: common/models.py:1886 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "" -#: common/models.py:1879 +#: common/models.py:1900 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1892 +#: common/models.py:1913 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1929 +#: common/models.py:1950 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "" -#: common/models.py:1936 +#: common/models.py:1957 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1950 +#: common/models.py:1971 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1958 +#: common/models.py:1979 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1966 +#: common/models.py:1987 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1974 +#: common/models.py:1995 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2029 common/models.py:2429 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2043 +#: common/models.py:2070 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2045 +#: common/models.py:2072 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2051 +#: common/models.py:2078 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2052 +#: common/models.py:2079 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2057 +#: common/models.py:2084 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2058 +#: common/models.py:2085 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2063 +#: common/models.py:2090 msgid "Show latest parts" msgstr "" -#: common/models.py:2064 +#: common/models.py:2091 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2069 +#: common/models.py:2096 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2070 +#: common/models.py:2097 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2075 +#: common/models.py:2102 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2076 +#: common/models.py:2103 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2081 +#: common/models.py:2108 msgid "Show low stock" msgstr "" -#: common/models.py:2082 +#: common/models.py:2109 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2087 +#: common/models.py:2114 msgid "Show depleted stock" msgstr "" -#: common/models.py:2088 +#: common/models.py:2115 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2093 +#: common/models.py:2120 msgid "Show needed stock" msgstr "" -#: common/models.py:2094 +#: common/models.py:2121 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2099 +#: common/models.py:2126 msgid "Show expired stock" msgstr "" -#: common/models.py:2100 +#: common/models.py:2127 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2105 +#: common/models.py:2132 msgid "Show stale stock" msgstr "" -#: common/models.py:2106 +#: common/models.py:2133 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2111 +#: common/models.py:2138 msgid "Show pending builds" msgstr "" -#: common/models.py:2112 +#: common/models.py:2139 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2117 +#: common/models.py:2144 msgid "Show overdue builds" msgstr "" -#: common/models.py:2118 +#: common/models.py:2145 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2123 +#: common/models.py:2150 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2124 +#: common/models.py:2151 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2129 +#: common/models.py:2156 msgid "Show overdue POs" msgstr "" -#: common/models.py:2130 +#: common/models.py:2157 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2135 +#: common/models.py:2162 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2136 +#: common/models.py:2163 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2141 +#: common/models.py:2168 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2142 +#: common/models.py:2169 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2147 +#: common/models.py:2174 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2148 +#: common/models.py:2175 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2153 +#: common/models.py:2180 msgid "Show News" msgstr "" -#: common/models.py:2154 +#: common/models.py:2181 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2159 +#: common/models.py:2186 msgid "Inline label display" msgstr "" -#: common/models.py:2161 +#: common/models.py:2188 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2167 +#: common/models.py:2194 msgid "Default label printer" msgstr "" -#: common/models.py:2169 +#: common/models.py:2196 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2175 +#: common/models.py:2202 msgid "Inline report display" msgstr "" -#: common/models.py:2177 +#: common/models.py:2204 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2183 +#: common/models.py:2210 msgid "Search Parts" msgstr "" -#: common/models.py:2184 +#: common/models.py:2211 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2189 +#: common/models.py:2216 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2190 +#: common/models.py:2217 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2195 +#: common/models.py:2222 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2196 +#: common/models.py:2223 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2201 +#: common/models.py:2228 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2202 +#: common/models.py:2229 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2207 +#: common/models.py:2234 msgid "Search Categories" msgstr "" -#: common/models.py:2208 +#: common/models.py:2235 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2213 +#: common/models.py:2240 msgid "Search Stock" msgstr "" -#: common/models.py:2214 +#: common/models.py:2241 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2219 +#: common/models.py:2246 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2221 +#: common/models.py:2248 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2227 +#: common/models.py:2254 msgid "Search Locations" msgstr "" -#: common/models.py:2228 +#: common/models.py:2255 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2233 +#: common/models.py:2260 msgid "Search Companies" msgstr "" -#: common/models.py:2234 +#: common/models.py:2261 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2239 +#: common/models.py:2266 msgid "Search Build Orders" msgstr "" -#: common/models.py:2240 +#: common/models.py:2267 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2245 +#: common/models.py:2272 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2246 +#: common/models.py:2273 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2251 +#: common/models.py:2278 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2253 +#: common/models.py:2280 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2259 +#: common/models.py:2286 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2260 +#: common/models.py:2287 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2265 +#: common/models.py:2292 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2267 +#: common/models.py:2294 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2273 +#: common/models.py:2300 msgid "Search Return Orders" msgstr "" -#: common/models.py:2274 +#: common/models.py:2301 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2279 +#: common/models.py:2306 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2281 +#: common/models.py:2308 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2287 +#: common/models.py:2314 msgid "Search Preview Results" msgstr "" -#: common/models.py:2289 +#: common/models.py:2316 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2295 +#: common/models.py:2322 msgid "Regex Search" msgstr "" -#: common/models.py:2296 +#: common/models.py:2323 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2301 +#: common/models.py:2328 msgid "Whole Word Search" msgstr "" -#: common/models.py:2302 +#: common/models.py:2329 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2307 +#: common/models.py:2334 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2308 +#: common/models.py:2335 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2313 +#: common/models.py:2340 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2314 +#: common/models.py:2341 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2319 +#: common/models.py:2346 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2320 +#: common/models.py:2347 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2325 +#: common/models.py:2352 msgid "Date Format" msgstr "" -#: common/models.py:2326 +#: common/models.py:2353 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2366 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2340 +#: common/models.py:2367 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2372 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2347 +#: common/models.py:2374 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2353 +#: common/models.py:2380 msgid "Table String Length" msgstr "" -#: common/models.py:2355 +#: common/models.py:2382 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2361 +#: common/models.py:2388 msgid "Default part label template" msgstr "" -#: common/models.py:2362 +#: common/models.py:2389 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2367 +#: common/models.py:2394 msgid "Default stock item template" msgstr "" -#: common/models.py:2369 +#: common/models.py:2396 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2375 +#: common/models.py:2402 msgid "Default stock location label template" msgstr "" -#: common/models.py:2377 +#: common/models.py:2404 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2383 +#: common/models.py:2410 msgid "Receive error reports" msgstr "" -#: common/models.py:2384 +#: common/models.py:2411 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2389 +#: common/models.py:2416 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2417 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2460 msgid "Price break quantity" msgstr "" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3503,23 +3536,23 @@ msgstr "" msgid "Price" msgstr "" -#: common/models.py:2441 +#: common/models.py:2468 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2639 common/models.py:2824 msgid "Endpoint" msgstr "" -#: common/models.py:2613 +#: common/models.py:2640 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2623 +#: common/models.py:2650 msgid "Name for this webhook" msgstr "" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3529,101 +3562,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2627 +#: common/models.py:2654 msgid "Is this webhook active" msgstr "" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2670 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2644 +#: common/models.py:2671 msgid "Token for access" msgstr "" -#: common/models.py:2652 +#: common/models.py:2679 msgid "Secret" msgstr "" -#: common/models.py:2653 +#: common/models.py:2680 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2761 +#: common/models.py:2788 msgid "Message ID" msgstr "" -#: common/models.py:2762 +#: common/models.py:2789 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2770 +#: common/models.py:2797 msgid "Host" msgstr "" -#: common/models.py:2771 +#: common/models.py:2798 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2779 +#: common/models.py:2806 msgid "Header" msgstr "" -#: common/models.py:2780 +#: common/models.py:2807 msgid "Header of this message" msgstr "" -#: common/models.py:2787 +#: common/models.py:2814 msgid "Body" msgstr "" -#: common/models.py:2788 +#: common/models.py:2815 msgid "Body of this message" msgstr "" -#: common/models.py:2798 +#: common/models.py:2825 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2803 +#: common/models.py:2830 msgid "Worked on" msgstr "" -#: common/models.py:2804 +#: common/models.py:2831 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2930 +#: common/models.py:2957 msgid "Id" msgstr "" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2959 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2963 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2965 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2967 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Read" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Was this news item read?" msgstr "" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2987 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3633,31 +3666,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2960 +#: common/models.py:2987 msgid "Image file" msgstr "" -#: common/models.py:3002 +#: common/models.py:3029 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3021 +#: common/models.py:3048 msgid "Unit name" msgstr "" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3029 +#: common/models.py:3056 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3037 +#: common/models.py:3064 msgid "Unit definition" msgstr "" @@ -3961,7 +3994,7 @@ msgid "Link to address information (external)" msgstr "" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" @@ -3972,7 +4005,7 @@ msgstr "" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3987,7 +4020,7 @@ msgid "Select manufacturer" msgstr "" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4022,9 +4055,9 @@ msgstr "" #: company/models.py:615 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2438 templates/js/translated/company.js:1156 +#: stock/models.py:2441 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1519 msgid "Value" msgstr "" @@ -4033,7 +4066,7 @@ msgid "Parameter value" msgstr "" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4059,7 +4092,7 @@ msgstr "" #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4076,7 +4109,7 @@ msgstr "" msgid "Select supplier" msgstr "" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "" @@ -4093,13 +4126,13 @@ msgid "Supplier part description" msgstr "" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:579 msgid "Note" msgstr "" @@ -4112,10 +4145,10 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 -#: templates/js/translated/stock.js:2387 +#: templates/js/translated/stock.js:2423 msgid "Packaging" msgstr "" @@ -4157,7 +4190,7 @@ msgstr "" msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "" @@ -4218,13 +4251,13 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1100 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 #: templates/js/translated/return_order.js:296 #: templates/js/translated/sales_order.js:784 -#: templates/js/translated/stock.js:2923 +#: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:804 msgid "Customer" msgstr "" @@ -4429,8 +4462,9 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "" @@ -4482,7 +4516,7 @@ msgstr "" #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2243 +#: templates/js/translated/stock.js:2279 msgid "Supplier Part" msgstr "" @@ -4528,7 +4562,7 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4577,15 +4611,17 @@ msgstr "" msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 -#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:193 msgid "Stock Items" msgstr "" @@ -4639,8 +4675,8 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" @@ -4665,7 +4701,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "" @@ -4679,8 +4715,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "" @@ -4821,7 +4857,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1674 -#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "" @@ -4830,7 +4866,7 @@ msgstr "" #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 -#: templates/js/translated/stock.js:2905 +#: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "" @@ -4838,11 +4874,11 @@ msgstr "" msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -5029,9 +5065,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2274 +#: templates/js/translated/stock.js:2310 msgid "Purchase Price" msgstr "" @@ -5084,8 +5120,8 @@ msgstr "" msgid "User who checked this shipment" msgstr "" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "" @@ -5133,7 +5169,7 @@ msgstr "" msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "" @@ -5207,159 +5243,159 @@ msgstr "" msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:610 +#: order/serializers.py:632 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1677 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "" @@ -5733,7 +5769,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" @@ -5763,12 +5799,12 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5780,12 +5816,12 @@ msgstr "" #: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 -#: templates/js/translated/stock.js:1999 +#: templates/js/translated/stock.js:2035 msgid "IPN" msgstr "" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" @@ -5861,10 +5897,10 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -5885,17 +5921,17 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3897 msgid "Part IPN" msgstr "" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5973,8 +6009,8 @@ msgstr "" msgid "This option must be selected" msgstr "" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5982,12 +6018,17 @@ msgstr "" msgid "Category" msgstr "" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5995,7 +6036,7 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -6010,7 +6051,8 @@ msgstr "" msgid "Default location for parts in this category" msgstr "" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 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" @@ -6076,7 +6118,7 @@ msgstr "" msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3896 msgid "Part name" msgstr "" @@ -6358,7 +6400,7 @@ msgstr "" #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1732 -#: templates/js/translated/stock.js:2785 +#: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" @@ -6410,586 +6452,602 @@ msgstr "" msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3448 -msgid "Test with this name already exists for this part" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "" -#: part/models.py:3496 +#: part/models.py:3505 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "" -#: part/models.py:3503 +#: part/models.py:3512 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3847 +#: part/models.py:3856 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3885 +#: part/models.py:3894 msgid "Part ID or part name" msgstr "" -#: part/models.py:3886 +#: part/models.py:3895 msgid "Unique part ID value" msgstr "" -#: part/models.py:3888 +#: part/models.py:3897 msgid "Part IPN value" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "Level" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "BOM level" msgstr "" -#: part/models.py:3979 +#: part/models.py:3988 msgid "Select parent part" msgstr "" -#: part/models.py:3989 +#: part/models.py:3998 msgid "Sub part" msgstr "" -#: part/models.py:3990 +#: part/models.py:3999 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4001 +#: part/models.py:4010 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4007 +#: part/models.py:4016 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4013 +#: part/models.py:4022 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4029 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4021 +#: part/models.py:4030 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4028 +#: part/models.py:4037 msgid "BOM item reference" msgstr "" -#: part/models.py:4036 +#: part/models.py:4045 msgid "BOM item notes" msgstr "" -#: part/models.py:4042 +#: part/models.py:4051 msgid "Checksum" msgstr "" -#: part/models.py:4043 +#: part/models.py:4052 msgid "BOM line checksum" msgstr "" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4057 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4049 +#: part/models.py:4058 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4063 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:4055 +#: part/models.py:4064 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4069 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4061 +#: part/models.py:4070 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4146 stock/models.py:649 +#: part/models.py:4155 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4165 part/models.py:4167 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4298 +#: part/models.py:4307 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4319 +#: part/models.py:4328 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4332 +#: part/models.py:4341 msgid "Parent BOM item" msgstr "" -#: part/models.py:4340 +#: part/models.py:4349 msgid "Substitute part" msgstr "" -#: part/models.py:4356 +#: part/models.py:4365 msgid "Part 1" msgstr "" -#: part/models.py:4364 +#: part/models.py:4373 msgid "Part 2" msgstr "" -#: part/models.py:4365 +#: part/models.py:4374 msgid "Select Related Part" msgstr "" -#: part/models.py:4384 +#: part/models.py:4393 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4389 +#: part/models.py:4398 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:432 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:480 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1104 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1078 +#: part/serializers.py:1114 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1088 +#: part/serializers.py:1124 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1647 +#: part/serializers.py:1693 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1659 +#: part/serializers.py:1705 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1694 +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "" @@ -7147,7 +7205,7 @@ msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/stock.js:2179 users/models.py:191 +#: templates/js/translated/stock.js:2215 users/models.py:191 msgid "Stocktake" msgstr "" @@ -7221,7 +7279,7 @@ msgid "Validate BOM" msgstr "" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "" @@ -7405,7 +7463,7 @@ msgstr "" msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "" @@ -7509,7 +7567,7 @@ msgstr "" #: templates/InvenTree/settings/sidebar.html:51 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 -#: templates/js/translated/stock.js:2033 templates/navbar.html:31 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7555,7 +7613,7 @@ msgstr "" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 -#: templates/js/translated/stock.js:2209 +#: templates/js/translated/stock.js:2245 msgid "Last Updated" msgstr "" @@ -7999,7 +8057,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "" @@ -8307,16 +8365,16 @@ msgstr "" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "" @@ -8336,103 +8394,111 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" msgstr "" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" msgstr "" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8499,12 +8565,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1492 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Result" msgstr "" @@ -8531,7 +8597,7 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:168 #: stock/admin.py:162 templates/js/translated/stock.js:700 -#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110 msgid "Serial" msgstr "" @@ -8615,7 +8681,7 @@ msgstr "" #: stock/admin.py:256 stock/models.py:886 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2193 users/models.py:113 +#: templates/js/translated/stock.js:2229 users/models.py:113 msgid "Expiry Date" msgstr "" @@ -8713,7 +8779,7 @@ msgstr "" msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:174 templates/js/translated/stock.js:2745 +#: stock/models.py:174 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" @@ -8722,7 +8788,7 @@ msgstr "" msgid "This is an external stock location" msgstr "" -#: stock/models.py:181 templates/js/translated/stock.js:2754 +#: stock/models.py:181 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" @@ -8739,7 +8805,7 @@ msgstr "" msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:290 msgid "Stock item cannot be created for virtual parts" msgstr "" @@ -8784,7 +8850,7 @@ msgstr "" msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1351 msgid "Packaging this stock item is stored in" msgstr "" @@ -8796,7 +8862,7 @@ msgstr "" msgid "Serial number for this item" msgstr "" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1334 msgid "Batch code for this stock item" msgstr "" @@ -8873,7 +8939,7 @@ msgstr "" msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:529 msgid "Serial numbers already exist" msgstr "" @@ -8905,7 +8971,7 @@ msgstr "" msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1240 msgid "Duplicate stock items" msgstr "" @@ -8929,207 +8995,236 @@ msgstr "" msgid "Entry notes" msgstr "" -#: stock/models.py:2399 +#: stock/models.py:2402 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2405 +#: stock/models.py:2408 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Test result" msgstr "" -#: stock/models.py:2439 +#: stock/models.py:2442 msgid "Test output value" msgstr "" -#: stock/models.py:2447 +#: stock/models.py:2450 msgid "Test result attachment" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2454 msgid "Test notes" msgstr "" -#: stock/serializers.py:96 +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "" + +#: stock/models.py:2463 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2469 +msgid "Started" +msgstr "" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:100 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:119 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 +#: stock/serializers.py:151 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:184 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:267 +#: stock/serializers.py:282 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:380 +#: stock/serializers.py:402 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:442 +#: stock/serializers.py:464 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:455 +#: stock/serializers.py:477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:462 +#: stock/serializers.py:484 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:480 +#: stock/serializers.py:502 msgid "Optional note field" msgstr "" -#: stock/serializers.py:490 +#: stock/serializers.py:512 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:545 +#: stock/serializers.py:567 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:574 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:553 +#: stock/serializers.py:575 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:566 +#: stock/serializers.py:588 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:596 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:581 +#: stock/serializers.py:607 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:620 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:628 +#: stock/serializers.py:655 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:663 +#: stock/serializers.py:690 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:676 +#: stock/serializers.py:703 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:693 +#: stock/serializers.py:720 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:724 +#: stock/serializers.py:751 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:761 +#: stock/serializers.py:788 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:767 +#: stock/serializers.py:794 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1036 +#: stock/serializers.py:1069 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1040 +#: stock/serializers.py:1073 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1044 +#: stock/serializers.py:1077 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1068 +#: stock/serializers.py:1101 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1074 +#: stock/serializers.py:1107 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1082 +#: stock/serializers.py:1115 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1125 stock/serializers.py:1379 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1171 +#: stock/serializers.py:1204 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1176 +#: stock/serializers.py:1209 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1177 +#: stock/serializers.py:1210 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1182 +#: stock/serializers.py:1215 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1183 +#: stock/serializers.py:1216 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1193 +#: stock/serializers.py:1226 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1260 +#: stock/serializers.py:1293 msgid "No Change" msgstr "" -#: stock/serializers.py:1289 +#: stock/serializers.py:1322 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1308 +#: stock/serializers.py:1341 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1336 +#: stock/serializers.py:1369 msgid "Stock transaction notes" msgstr "" @@ -9154,7 +9249,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 msgid "Delete Test Data" msgstr "" @@ -9170,15 +9265,15 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:274 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 msgid "Add Test Result" msgstr "" @@ -9201,17 +9296,17 @@ msgid "Stock adjustment actions" msgstr "" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 msgid "Count stock" msgstr "" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:1803 msgid "Add stock" msgstr "" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1776 +#: templates/js/translated/stock.js:1812 msgid "Remove stock" msgstr "" @@ -9220,12 +9315,12 @@ msgid "Serialize stock" msgstr "" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 msgid "Transfer stock" msgstr "" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1884 msgid "Assign to customer" msgstr "" @@ -9364,7 +9459,7 @@ msgid "No stocktake performed" msgstr "" #: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1915 +#: templates/js/translated/stock.js:1951 msgid "stock item" msgstr "" @@ -9469,7 +9564,7 @@ msgid "New Location" msgstr "" #: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2536 +#: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" @@ -10063,7 +10158,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:37 msgid "New Location Type" msgstr "" @@ -10120,7 +10215,7 @@ msgstr "" msgid "Stock Settings" msgstr "" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:33 msgid "Stock Location Types" msgstr "" @@ -10662,7 +10757,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "" @@ -10676,7 +10771,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "" @@ -11051,62 +11146,66 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "" @@ -11389,7 +11488,7 @@ msgstr "" #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 -#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11401,7 +11500,7 @@ msgstr "" msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006 +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" @@ -11449,29 +11548,29 @@ msgstr "" msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "" @@ -11804,15 +11903,15 @@ msgstr "" msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3087 +#: templates/js/translated/forms.js:3103 msgid "Select Columns" msgstr "" @@ -12289,7 +12388,7 @@ msgid "No category" msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 -#: templates/js/translated/stock.js:2633 +#: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" @@ -12301,7 +12400,7 @@ msgstr "" msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" @@ -12313,64 +12412,64 @@ msgstr "" msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" @@ -12907,7 +13006,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1737 +#: templates/js/translated/stock.js:1773 msgid "Shipped to customer" msgstr "" @@ -13165,7 +13264,7 @@ msgstr "" msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" @@ -13189,248 +13288,256 @@ msgstr "" msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1440 +#: templates/js/translated/stock.js:1447 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1443 +#: templates/js/translated/stock.js:1450 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1466 +#: templates/js/translated/stock.js:1473 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1530 +#: templates/js/translated/stock.js:1537 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1677 +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1733 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1729 +#: templates/js/translated/stock.js:1765 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1769 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1741 +#: templates/js/translated/stock.js:1777 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1747 +#: templates/js/translated/stock.js:1783 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1839 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1848 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:1897 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1916 +#: templates/js/translated/stock.js:1952 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1921 +#: templates/js/translated/stock.js:1957 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1932 +#: templates/js/translated/stock.js:1968 msgid "Stock Actions" msgstr "" -#: templates/js/translated/stock.js:1976 +#: templates/js/translated/stock.js:2012 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2054 +#: templates/js/translated/stock.js:2090 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2059 +#: templates/js/translated/stock.js:2095 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2062 +#: templates/js/translated/stock.js:2098 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2065 +#: templates/js/translated/stock.js:2101 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2067 +#: templates/js/translated/stock.js:2103 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2069 +#: templates/js/translated/stock.js:2105 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2072 +#: templates/js/translated/stock.js:2108 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2074 +#: templates/js/translated/stock.js:2110 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2114 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2080 +#: templates/js/translated/stock.js:2116 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2085 +#: templates/js/translated/stock.js:2121 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2087 +#: templates/js/translated/stock.js:2123 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2089 +#: templates/js/translated/stock.js:2125 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2129 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2258 +#: templates/js/translated/stock.js:2294 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2305 +#: templates/js/translated/stock.js:2341 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2433 +#: templates/js/translated/stock.js:2469 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2573 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2692 +#: templates/js/translated/stock.js:2728 msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2810 +#: templates/js/translated/stock.js:2846 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2814 +#: templates/js/translated/stock.js:2850 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:2862 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2848 +#: templates/js/translated/stock.js:2884 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2865 +#: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2880 +#: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2897 +#: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2914 +#: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3005 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2977 +#: templates/js/translated/stock.js:3013 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:3049 +#: templates/js/translated/stock.js:3085 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139 +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:3161 +#: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:3182 +#: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:3183 +#: 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:3185 +#: 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:3186 +#: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:3187 +#: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:3188 +#: 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:3201 +#: templates/js/translated/stock.js:3237 msgid "Select part to install" msgstr "" -#: templates/js/translated/stock.js:3264 +#: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" msgstr "" -#: templates/js/translated/stock.js:3277 +#: templates/js/translated/stock.js:3313 msgid "Selected stock items" msgstr "" -#: templates/js/translated/stock.js:3281 +#: templates/js/translated/stock.js:3317 msgid "Change Stock Status" msgstr "" diff --git a/InvenTree/locale/de/LC_MESSAGES/django.po b/InvenTree/locale/de/LC_MESSAGES/django.po index 4a3fa970a1..4df186cf15 100644 --- a/InvenTree/locale/de/LC_MESSAGES/django.po +++ b/InvenTree/locale/de/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 04:05+0000\n" -"PO-Revision-Date: 2024-02-28 07:23\n" +"POT-Creation-Date: 2024-03-22 10:34+0000\n" +"PO-Revision-Date: 2024-03-22 14:07\n" "Last-Translator: \n" "Language-Team: German\n" "Language: de_DE\n" @@ -28,22 +28,22 @@ msgstr "Benutzer hat keine Berechtigung, dieses Modell anzuzeigen" #: InvenTree/conversion.py:160 #, python-brace-format msgid "Invalid unit provided ({unit})" -msgstr "" +msgstr "Ungültige Einheit angegeben ({unit})" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "Kein Wert angegeben" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "Konnte {original} nicht in {unit} umwandeln" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" msgstr "Ungültige Menge" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" msgstr "Ungültige Menge ({exc})" @@ -64,18 +64,18 @@ msgstr "Datum eingeben" #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 #: templates/js/translated/return_order.js:776 #: templates/js/translated/sales_order.js:1067 #: templates/js/translated/sales_order.js:1982 -#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 msgid "Notes" msgstr "Notizen" @@ -132,42 +132,42 @@ msgstr "Die angegebene E-Mail-Domain ist nicht freigegeben." msgid "Registration is disabled." msgstr "Registrierung ist deaktiviert." -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "Keine gültige Menge" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "Keine Seriennummer angegeben" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "Duplizierter Seriennummer" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "Ungültiger Gruppenbereich: {group}" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "Gruppenbereich {group} überschreitet die zulässige Menge ({expected_quantity})" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "Ungültige Gruppensequenz: {group}" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "Keine Seriennummern gefunden" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "Anzahl der eindeutigen Seriennummern ({len(serials)}) muss mit der Menge übereinstimmen ({expected_quantity})" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "Entferne HTML-Tags von diesem Wert" @@ -203,131 +203,135 @@ msgstr "Remote-Server gab leere Antwort zurück" msgid "Supplied URL is not a valid image file" msgstr "Angegebene URL ist kein gültiges Bild" -#: InvenTree/locales.py:16 +#: InvenTree/locales.py:18 msgid "Bulgarian" msgstr "Bulgarisch" -#: InvenTree/locales.py:17 +#: InvenTree/locales.py:19 msgid "Czech" msgstr "Tschechisch" -#: InvenTree/locales.py:18 +#: InvenTree/locales.py:20 msgid "Danish" msgstr "Dänisch" -#: InvenTree/locales.py:19 +#: InvenTree/locales.py:21 msgid "German" msgstr "Deutsch" -#: InvenTree/locales.py:20 +#: InvenTree/locales.py:22 msgid "Greek" msgstr "Griechisch" -#: InvenTree/locales.py:21 +#: InvenTree/locales.py:23 msgid "English" msgstr "Englisch" -#: InvenTree/locales.py:22 +#: InvenTree/locales.py:24 msgid "Spanish" msgstr "Spanisch" -#: InvenTree/locales.py:23 +#: InvenTree/locales.py:25 msgid "Spanish (Mexican)" msgstr "Spanisch (Mexikanisch)" -#: InvenTree/locales.py:24 +#: InvenTree/locales.py:26 msgid "Farsi / Persian" msgstr "Persisch" -#: InvenTree/locales.py:25 +#: InvenTree/locales.py:27 msgid "Finnish" msgstr "Beenden" -#: InvenTree/locales.py:26 +#: InvenTree/locales.py:28 msgid "French" msgstr "Französisch" -#: InvenTree/locales.py:27 +#: InvenTree/locales.py:29 msgid "Hebrew" msgstr "Hebräisch" -#: InvenTree/locales.py:28 +#: InvenTree/locales.py:30 msgid "Hindi" msgstr "Hindi" -#: InvenTree/locales.py:29 +#: InvenTree/locales.py:31 msgid "Hungarian" msgstr "Ungarisch" -#: InvenTree/locales.py:30 +#: InvenTree/locales.py:32 msgid "Italian" msgstr "Italienisch" -#: InvenTree/locales.py:31 +#: InvenTree/locales.py:33 msgid "Japanese" msgstr "Japanisch" -#: InvenTree/locales.py:32 +#: InvenTree/locales.py:34 msgid "Korean" msgstr "Koreanisch" -#: InvenTree/locales.py:33 +#: InvenTree/locales.py:35 +msgid "Latvian" +msgstr "Lettisch" + +#: InvenTree/locales.py:36 msgid "Dutch" msgstr "Niederländisch" -#: InvenTree/locales.py:34 +#: InvenTree/locales.py:37 msgid "Norwegian" msgstr "Norwegisch" -#: InvenTree/locales.py:35 +#: InvenTree/locales.py:38 msgid "Polish" msgstr "Polnisch" -#: InvenTree/locales.py:36 +#: InvenTree/locales.py:39 msgid "Portuguese" msgstr "Portugiesisch" -#: InvenTree/locales.py:37 +#: InvenTree/locales.py:40 msgid "Portuguese (Brazilian)" msgstr "Portugiesisch (Brasilien)" -#: InvenTree/locales.py:38 +#: InvenTree/locales.py:41 msgid "Russian" msgstr "Russisch" -#: InvenTree/locales.py:39 +#: InvenTree/locales.py:42 msgid "Slovak" msgstr "Slowakisch" -#: InvenTree/locales.py:40 +#: InvenTree/locales.py:43 msgid "Slovenian" msgstr "Slowenisch" -#: InvenTree/locales.py:41 +#: InvenTree/locales.py:44 msgid "Serbian" msgstr "Serbisch" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:45 msgid "Swedish" msgstr "Schwedisch" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:46 msgid "Thai" msgstr "Thailändisch" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:47 msgid "Turkish" msgstr "Türkisch" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:48 msgid "Vietnamese" msgstr "Vietnamesisch" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:49 msgid "Chinese (Simplified)" msgstr "Chinesisch (Vereinfacht)" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:50 msgid "Chinese (Traditional)" msgstr "Chinesisch (Traditionell)" @@ -391,7 +395,7 @@ msgstr "Fehlende Datei" msgid "Missing external link" msgstr "Fehlender externer Link" -#: InvenTree/models.py:559 stock/models.py:2446 +#: InvenTree/models.py:559 stock/models.py:2449 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -401,7 +405,7 @@ msgstr "Anhang" msgid "Select file to attach" msgstr "Datei zum Anhängen auswählen" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -432,13 +436,13 @@ msgstr "Kommentar" msgid "File comment" msgstr "Datei-Kommentar" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:3000 users/models.py:100 +#: templates/js/translated/stock.js:3036 users/models.py:100 msgid "User" msgstr "Benutzer" @@ -479,10 +483,10 @@ msgstr "Doppelte Namen können nicht unter dem selben Elternteil existieren" msgid "Invalid choice" msgstr "Ungültige Auswahl" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -495,7 +499,7 @@ msgstr "Ungültige Auswahl" #: templates/js/translated/company.js:1155 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Name" @@ -506,10 +510,10 @@ msgstr "Name" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -523,7 +527,7 @@ msgstr "Name" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -531,8 +535,8 @@ msgstr "Name" #: templates/js/translated/return_order.js:314 #: templates/js/translated/sales_order.js:802 #: templates/js/translated/sales_order.js:1812 -#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021 -#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "Beschreibung" @@ -545,7 +549,7 @@ msgid "parent" msgstr "Eltern" #: InvenTree/models.py:916 templates/js/translated/part.js:2794 -#: templates/js/translated/stock.js:2721 +#: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Pfad" @@ -581,7 +585,7 @@ msgstr "Serverfehler" msgid "An error has been logged by the server." msgstr "Ein Fehler wurde vom Server protokolliert." -#: InvenTree/serializers.py:62 part/models.py:4134 +#: InvenTree/serializers.py:62 part/models.py:4165 msgid "Must be a valid number" msgstr "Muss eine gültige Nummer sein" @@ -596,89 +600,89 @@ msgstr "Währung" msgid "Select currency from available options" msgstr "Währung aus verfügbaren Optionen auswählen" -#: InvenTree/serializers.py:436 +#: InvenTree/serializers.py:441 msgid "You do not have permission to change this user role." msgstr "Sie haben keine Berechtigung, diese Benutzerrolle zu ändern." -#: InvenTree/serializers.py:448 +#: InvenTree/serializers.py:453 msgid "Only superusers can create new users" msgstr "Nur Superuser können neue Benutzer erstellen" -#: InvenTree/serializers.py:467 +#: InvenTree/serializers.py:472 msgid "Your account has been created." msgstr "Ihr Konto wurde erstellt." -#: InvenTree/serializers.py:469 +#: InvenTree/serializers.py:474 msgid "Please use the password reset function to login" msgstr "Bitte benutzen Sie die Passwort-zurücksetzen-Funktion, um sich anzumelden" -#: InvenTree/serializers.py:476 +#: InvenTree/serializers.py:481 msgid "Welcome to InvenTree" msgstr "Willkommen bei InvenTree" -#: InvenTree/serializers.py:537 +#: InvenTree/serializers.py:542 msgid "Filename" msgstr "Dateiname" -#: InvenTree/serializers.py:571 +#: InvenTree/serializers.py:576 msgid "Invalid value" msgstr "Ungültiger Wert" -#: InvenTree/serializers.py:591 +#: InvenTree/serializers.py:596 msgid "Data File" msgstr "Datendatei" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:597 msgid "Select data file for upload" msgstr "Neue Datei zum Hochladen auswählen" -#: InvenTree/serializers.py:609 +#: InvenTree/serializers.py:614 msgid "Unsupported file type" msgstr "Nicht unterstütztes Dateiformat" -#: InvenTree/serializers.py:615 +#: InvenTree/serializers.py:620 msgid "File is too large" msgstr "Datei ist zu groß" -#: InvenTree/serializers.py:636 +#: InvenTree/serializers.py:641 msgid "No columns found in file" msgstr "Keine Spalten in der Datei gefunden" -#: InvenTree/serializers.py:639 +#: InvenTree/serializers.py:644 msgid "No data rows found in file" msgstr "Keine Datensätze in der Datei gefunden" -#: InvenTree/serializers.py:752 +#: InvenTree/serializers.py:757 msgid "No data rows provided" msgstr "Keine Zeilen ausgewählt" -#: InvenTree/serializers.py:755 +#: InvenTree/serializers.py:760 msgid "No data columns supplied" msgstr "Keine Spalten angegeben" -#: InvenTree/serializers.py:822 +#: InvenTree/serializers.py:827 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Erforderliche Spalte '{name}' fehlt" -#: InvenTree/serializers.py:831 +#: InvenTree/serializers.py:836 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Doppelte Spalte: '{col}'" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:859 msgid "Remote Image" msgstr "Grafiken aus externen Quellen" -#: InvenTree/serializers.py:855 +#: InvenTree/serializers.py:860 msgid "URL of remote image file" msgstr "URL der Remote-Bilddatei" -#: InvenTree/serializers.py:873 +#: InvenTree/serializers.py:878 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:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "Hintergrund-Prozess-Kontrolle fehlgeschlagen" @@ -818,7 +822,7 @@ msgstr "Vom übergeordneten Element geteilt" msgid "Split child item" msgstr "Unterobjekt geteilt" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 msgid "Merged stock items" msgstr "Lagerartikel zusammengeführt" @@ -838,7 +842,7 @@ msgstr "Endprodukt fertiggestellt" msgid "Build order output rejected" msgstr "Endprodukt abgelehnt" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 msgid "Consumed by build order" msgstr "Durch Bauauftrag verbraucht" @@ -938,14 +942,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:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4043 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "Verbrauchsmaterial" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4037 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -960,7 +964,7 @@ msgid "Tracked" msgstr "Nachverfolgt" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -985,7 +989,7 @@ msgstr "Verfügbar" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "Bauauftrag" @@ -1014,7 +1018,7 @@ msgstr "Bauauftragsreferenz" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4058 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1044,11 +1048,11 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist" #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3916 part/models.py:4009 +#: part/models.py:4370 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1059,7 +1063,7 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:267 stock/serializers.py:689 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1086,9 +1090,9 @@ msgstr "Bauauftrag, zu dem dieser Bauauftrag zugwiesen ist" #: templates/js/translated/sales_order.js:1598 #: templates/js/translated/sales_order.js:1796 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960 -#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054 -#: templates/js/translated/stock.js:3200 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 msgid "Part" msgstr "Teil" @@ -1146,8 +1150,8 @@ msgstr "Bauauftrags-Status" msgid "Build status code" msgstr "Bau-Statuscode" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Losnummer" @@ -1242,53 +1246,53 @@ msgstr "Projektcode" msgid "Project code for this build order" msgstr "Projektcode für diesen Auftrag" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Bauauftrag {build} wurde fertiggestellt" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "Ein Bauauftrag wurde fertiggestellt" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "kein Endprodukt angegeben" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "Endprodukt bereits hergstellt" -#: build/models.py:789 +#: build/models.py:805 msgid "Build output does not match Build Order" msgstr "Endprodukt stimmt nicht mit dem Bauauftrag überein" -#: build/models.py:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 msgid "Quantity must be greater than zero" msgstr "Anzahl muss größer Null sein" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 msgid "Quantity cannot be greater than the output quantity" msgstr "Menge kann nicht größer als die Ausgangsmenge sein" -#: build/models.py:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, 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:1286 +#: build/models.py:1302 msgid "Build object" msgstr "Objekt bauen" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4031 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1298,7 +1302,7 @@ msgstr "Objekt bauen" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:463 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1310,7 +1314,7 @@ msgstr "Objekt bauen" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1325,43 +1329,43 @@ msgstr "Objekt bauen" #: templates/js/translated/sales_order.js:1698 #: templates/js/translated/sales_order.js:1824 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 -#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985 -#: templates/js/translated/stock.js:3068 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "Anzahl" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" msgstr "Erforderliche Menge für Auftrag" -#: build/models.py:1381 +#: build/models.py:1397 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:1390 +#: build/models.py:1406 #, 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:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "BestandObjekt ist zu oft zugewiesen" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "Reserviermenge muss größer null sein" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "Anzahl muss 1 für Objekte mit Seriennummer sein" -#: build/models.py:1473 +#: build/models.py:1489 msgid "Selected stock item does not match BOM line" msgstr "Ausgewählter Lagerbestand stimmt nicht mit BOM-Linie überein" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 @@ -1372,23 +1376,23 @@ msgstr "Ausgewählter Lagerbestand stimmt nicht mit BOM-Linie überein" #: templates/js/translated/sales_order.js:1605 #: templates/js/translated/sales_order.js:1692 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 -#: templates/js/translated/stock.js:2941 +#: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "Lagerartikel" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "Quell-Lagerartikel" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "Anzahl an Lagerartikel dem Bauauftrag zuweisen" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "Installiere in" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "Ziel-Lagerartikel" @@ -1425,8 +1429,8 @@ msgstr "Ganzzahl für verfolgbare Teile erforderlich" 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:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Seriennummer" @@ -1451,10 +1455,10 @@ msgstr "Die folgenden Seriennummern existieren bereits oder sind ungültig" msgid "A list of build outputs must be provided" msgstr "Eine Liste von Endprodukten muss angegeben werden" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1466,8 +1470,8 @@ msgstr "Eine Liste von Endprodukten muss angegeben werden" #: templates/js/translated/sales_order.js:1627 #: templates/js/translated/sales_order.js:1706 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164 -#: templates/js/translated/stock.js:2835 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 msgid "Location" msgstr "Lagerort" @@ -1493,16 +1497,16 @@ msgstr "Lagerort für fertige Endprodukte" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 #: templates/js/translated/purchase_order.js:1723 #: templates/js/translated/return_order.js:331 #: templates/js/translated/sales_order.js:819 -#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959 -#: templates/js/translated/stock.js:3084 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 msgid "Status" msgstr "Status" @@ -1566,7 +1570,7 @@ msgstr "Akzeptieren, dass Lagerartikel diesem Bauauftrag nicht vollständig zuge msgid "Required stock has not been fully allocated" msgstr "Benötigter Bestand wurde nicht vollständig zugewiesen" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "Unvollständig Zuweisung akzeptieren" @@ -1602,11 +1606,11 @@ msgstr "Bauauftragspositionsartikel" 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:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1065 msgid "Item must be in stock" msgstr "Teil muss auf Lager sein" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Verfügbare Menge ({q}) überschritten" @@ -1619,7 +1623,7 @@ msgstr "Für Zuweisung von verfolgten Teilen muss ein Endprodukt angegeben sein" 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:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "Zuweisungen müssen angegeben werden" @@ -1659,44 +1663,45 @@ msgstr "Optionale Positionen" msgid "Allocate optional BOM items to build order" msgstr "Optionale Stücklisten-Positionen dem Bauauftrag hinzufügen" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3926 part/models.py:4362 #: stock/api.py:745 msgid "BOM Item" msgstr "Stücklisten-Position" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "Zugewiesener Bestand" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "Bestellt" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "In Produktion" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "Verfügbarer Bestand" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "Bestand für Bauauftrag erforderlich" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "Überfälliger Bauauftrag" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "Bauauftrag {bo} ist jetzt überfällig" @@ -1862,7 +1867,7 @@ msgstr "Fertiggestellte Endprodukte" #: templates/js/translated/pricing.js:929 #: templates/js/translated/sales_order.js:769 #: templates/js/translated/sales_order.js:992 -#: templates/js/translated/stock.js:2888 +#: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "Auftrag" @@ -1920,8 +1925,8 @@ msgstr "Zugewiesene Teile" #: templates/js/translated/build.js:1377 #: templates/js/translated/model_renderers.js:235 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153 -#: templates/js/translated/stock.js:3091 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" @@ -1990,27 +1995,31 @@ msgstr "Benötigte Teile bestellen" msgid "Order Parts" msgstr "Teile bestellen" -#: build/templates/build/detail.html:210 +#: build/templates/build/detail.html:205 +msgid "Available stock has been filtered based on specified source location for this build order" +msgstr "Der verfügbare Bestand wurde auf der Grundlage des angegebenen Ausgangs-Lagers für diesen Bauauftrag gefiltert" + +#: build/templates/build/detail.html:215 msgid "Incomplete Build Outputs" msgstr "Unfertige Endprodukte" -#: build/templates/build/detail.html:214 +#: build/templates/build/detail.html:219 msgid "Create new build output" msgstr "Neues Endprodukt anlegen" -#: build/templates/build/detail.html:215 +#: build/templates/build/detail.html:220 msgid "New Build Output" msgstr "Neues Endprodukt" -#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "Verbrauchte Bestände" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "Fertiggestellte Endprodukte" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2026,15 +2035,15 @@ msgstr "Fertiggestellte Endprodukte" msgid "Attachments" msgstr "Anhänge" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "Bauauftrags-Notizen" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "Zuordnung abgeschlossen" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" msgstr "Alle Zeilen wurden vollständig zugewiesen" @@ -2112,1390 +2121,1414 @@ msgstr "Projektbeschreibung" msgid "User or group responsible for this project" msgstr "Benutzer oder Gruppe verantwortlich für dieses Projekt" -#: common/models.py:737 +#: common/models.py:744 msgid "Settings key (must be unique - case insensitive)" msgstr "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird nicht beachtet)" -#: common/models.py:741 +#: common/models.py:748 msgid "Settings value" msgstr "Einstellungs-Wert" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "Wert ist keine gültige Option" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "Wahrheitswert erforderlich" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "Nur Ganzzahl eingeben" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "Schlüsseltext muss eindeutig sein" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "Keine Gruppe" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "Eine leere Domain ist nicht erlaubt." -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "Ungültiger Domainname: {domain}" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "Kein Plugin" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "Neustart erforderlich" -#: common/models.py:1231 +#: common/models.py:1238 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:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "Ausstehende Migrationen" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "Anzahl der ausstehenden Datenbankmigrationen" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "Name der Serverinstanz" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "Kurze Beschreibung der Instanz" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "Name der Instanz verwenden" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "Den Namen der Instanz in der Titelleiste verwenden" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "Anzeige von `Über` einschränken" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "Zeige das `Über` Fenster nur Administratoren" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "Firmenname" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "interner Firmenname" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "Basis-URL" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "Basis-URL für dieses Instanz" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "Standardwährung" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "Wählen Sie die Basiswährung für Preisberechnungen aus" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "Währungsaktualisierungsintervall" -#: common/models.py:1283 +#: common/models.py:1290 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:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "Tage" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "Währungs-Aktualisierungs-Plugin" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" msgstr "Zu verwendendes Währungs-Aktualisierungs-Plugin" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "Von URL herunterladen" -#: common/models.py:1298 +#: common/models.py:1305 msgid "Allow download of remote images and files from external URL" msgstr "Herunterladen von externen Bildern und Dateien von URLs erlaubt" -#: common/models.py:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "Download-Größenlimit" -#: common/models.py:1305 +#: common/models.py:1312 msgid "Maximum allowable download size for remote image" msgstr "Maximal zulässige Größe für heruntergeladene Bilder" -#: common/models.py:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "Benutzer-Agent zum Herunterladen von Daten" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "Strenge URL-Prüfung" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "Erfordert die Schema-Spezifikation bei der Validierung von URLs" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "Bestätigung verpflichtend" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "Eine ausdrückliche Benutzerbestätigung für bestimmte Aktionen erfordern." -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "Baumtiefe" -#: common/models.py:1332 +#: common/models.py:1339 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:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "Prüfungsintervall aktualisieren" -#: common/models.py:1339 +#: common/models.py:1346 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:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "Automatische Sicherung" -#: common/models.py:1346 +#: common/models.py:1353 msgid "Enable automatic backup of database and media files" msgstr "Automatische Sicherung der Datenbank- und Mediendateien aktivieren" -#: common/models.py:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "Intervall für automatische Sicherung" -#: common/models.py:1352 +#: common/models.py:1359 msgid "Specify number of days between automated backup events" msgstr "Anzahl der Tage zwischen automatischen Sicherungen" -#: common/models.py:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "Aufgabenlöschinterval" -#: common/models.py:1360 +#: common/models.py:1367 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:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "Löschintervall für Fehlerprotokolle" -#: common/models.py:1369 +#: common/models.py:1376 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:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "Löschintervall für Benachrichtigungen" -#: common/models.py:1378 +#: common/models.py:1385 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:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Bacode-Feature verwenden" -#: common/models.py:1386 +#: common/models.py:1393 msgid "Enable barcode scanner support in the web interface" msgstr "Barcode-Scanner Unterstützung im Webinterface aktivieren" -#: common/models.py:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "Barcode-Eingabeverzögerung" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "Verzögerungszeit bei Barcode-Eingabe" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "Barcode Webcam-Unterstützung" -#: common/models.py:1399 +#: common/models.py:1406 msgid "Allow barcode scanning via webcam in browser" msgstr "Barcode-Scannen über Webcam im Browser erlauben" -#: common/models.py:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "Artikelrevisionen" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" msgstr "Revisions-Feld für Artikel aktivieren" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "IPN Regex" -#: common/models.py:1411 +#: common/models.py:1418 msgid "Regular expression pattern for matching Part IPN" msgstr "RegEx Muster für die Zuordnung von Teil-IPN" -#: common/models.py:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "Mehrere Artikel mit gleicher IPN erlaubt" -#: common/models.py:1415 +#: common/models.py:1422 msgid "Allow multiple parts to share the same IPN" msgstr "Mehrere Artikel mit gleicher IPN erlaubt" -#: common/models.py:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "Ändern von IPN erlaubt" -#: common/models.py:1421 +#: common/models.py:1428 msgid "Allow changing the IPN value while editing a part" msgstr "Ändern der IPN während des Bearbeiten eines Teils erlaubt" -#: common/models.py:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "Teil-Stückliste kopieren" -#: common/models.py:1427 +#: common/models.py:1434 msgid "Copy BOM data by default when duplicating a part" msgstr "Stückliste von Teil kopieren wenn das Teil dupliziert wird " -#: common/models.py:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "Teil-Parameter kopieren" -#: common/models.py:1433 +#: common/models.py:1440 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:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "Teil-Testdaten kopieren" -#: common/models.py:1439 +#: common/models.py:1446 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:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "Kategorie-Parametervorlage kopieren" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Copy category parameter templates when creating a part" msgstr "Kategorie-Parameter Vorlagen kopieren wenn ein Teil angelegt wird" -#: common/models.py:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "Vorlage" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "Teile sind standardmäßig Vorlagen" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 msgid "Parts can be assembled from other components by default" msgstr "Teile können standardmäßig aus anderen Teilen angefertigt werden" -#: common/models.py:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "Komponente" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Parts can be used as sub-components by default" msgstr "Teile können standardmäßig in Baugruppen benutzt werden" -#: common/models.py:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "Kaufbar" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "Artikel sind grundsätzlich kaufbar" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "Verkäuflich" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "Artikel sind grundsätzlich verkaufbar" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "Artikel sind grundsätzlich verfolgbar" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "Teile sind grundsätzlich virtuell" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "Import in Ansichten anzeigen" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Display the import wizard in some part views" msgstr "Importassistent in einigen Teil-Ansichten anzeigen" -#: common/models.py:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "Verwandte Teile anzeigen" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" msgstr "Verwandte Teile eines Teils anzeigen" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "Initialer Lagerbestand" -#: common/models.py:1505 +#: common/models.py:1512 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:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Initiale Lieferantendaten" -#: common/models.py:1512 +#: common/models.py:1519 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:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "Anzeigeformat für Teilenamen" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "Format für den Namen eines Teiles" -#: common/models.py:1525 +#: common/models.py:1532 msgid "Part Category Default Icon" msgstr "Standardsymbol der Teilkategorie" -#: common/models.py:1526 +#: common/models.py:1533 msgid "Part category default icon (empty means no icon)" msgstr "Standardsymbol der Teilkategorie (leer bedeutet kein Symbol)" -#: common/models.py:1530 +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "Parameter Einheiten durchsetzen" -#: common/models.py:1532 +#: common/models.py:1539 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:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "Dezimalstellen für minimalen Preis" -#: common/models.py:1540 +#: common/models.py:1547 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "Mindestanzahl der Dezimalstellen bei der Darstellung der Preisdaten" -#: common/models.py:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "Dezimalstellen für maximalen Preis" -#: common/models.py:1548 +#: common/models.py:1555 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:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "Zulieferer-Preise verwenden" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "Lieferanten-Staffelpreise in die Gesamt-Preisberechnungen einbeziehen" -#: common/models.py:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "Kaufverlauf überschreiben" -#: common/models.py:1564 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "Historische Bestellungspreise überschreiben die Lieferanten-Staffelpreise" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "Lagerartikel-Preis verwenden" -#: common/models.py:1572 +#: 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:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "Lagerartikelpreis Alter" -#: common/models.py:1580 +#: 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:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "Variantenpreise verwenden" -#: common/models.py:1588 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "Variantenpreise in die Gesamt-Preisberechnungen einbeziehen" -#: common/models.py:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "Nur aktive Varianten" -#: common/models.py:1595 +#: 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:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "Intervall für Neuberechnung von Preisen" -#: common/models.py:1603 +#: 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:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "Interne Preise" -#: common/models.py:1611 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "Interne Preise für Teile aktivieren" -#: common/models.py:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "Interne Preisüberschreibung" -#: common/models.py:1618 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "Falls verfügbar, überschreiben interne Preise Preispannenberechnungen" -#: common/models.py:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "Labeldruck aktivieren" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "Labeldruck über die Website aktivieren" -#: common/models.py:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "Label Bild DPI" -#: common/models.py:1632 +#: 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:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "Berichte aktivieren" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "Berichterstellung aktivieren" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "Entwickler-Modus" -#: common/models.py:1645 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "Berichte im Entwickler-Modus generieren (als HTML)" -#: common/models.py:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: common/models.py:1657 +msgid "Log Report Errors" +msgstr "Berichtsfehler protokollieren" + +#: common/models.py:1658 +msgid "Log errors which occur when generating reports" +msgstr "Fehler, die beim Erstellen von Berichten auftreten, protokollieren" + +#: common/models.py:1663 plugin/builtin/labels/label_sheet.py:28 +#: report/models.py:202 msgid "Page Size" msgstr "Seitengröße" -#: common/models.py:1651 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "Standardseitenformat für PDF-Bericht" -#: common/models.py:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "Testberichte aktivieren" -#: common/models.py:1657 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "Erstellung von Test-Berichten aktivieren" -#: common/models.py:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "Testberichte anhängen" -#: common/models.py:1664 +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "Global einzigartige Seriennummern" -#: common/models.py:1671 +#: 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:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "Seriennummern automatisch ausfüllen" -#: common/models.py:1677 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "Seriennummern in Formularen automatisch ausfüllen" -#: common/models.py:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "Erschöpften Lagerartikel löschen" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "Legt das Standardverhalten fest, wenn ein Lagerartikel erschöpft ist" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "Losnummer Vorlage" -#: common/models.py:1692 +#: 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:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "Bestands-Ablauf" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "Ablaufen von Bestand ermöglichen" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "Abgelaufenen Bestand verkaufen" -#: common/models.py:1704 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "Verkauf von abgelaufenem Bestand erlaubt" -#: common/models.py:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "Bestands-Stehzeit" -#: common/models.py:1711 +#: 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:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "Abgelaufenen Bestand verbauen" -#: common/models.py:1719 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "Verbauen von abgelaufenen Bestand erlaubt" -#: common/models.py:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "Bestands-Eigentümerkontrolle" -#: common/models.py:1725 +#: 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:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "Standardsymbol für Lagerort" -#: common/models.py:1731 +#: 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:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "Zeige installierte Lagerartikel" -#: common/models.py:1736 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "Anzeige der installierten Lagerartikel in Bestandstabellen" -#: common/models.py:1741 +#: common/models.py:1754 +msgid "Check BOM when installing items" +msgstr "Prüfe BOM bei der Installation von Elementen" + +#: 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:1762 msgid "Build Order Reference Pattern" msgstr "Bauauftragsreferenz-Muster" -#: common/models.py:1743 +#: common/models.py:1764 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:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "Rücksendungen aktivieren" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "Aktivieren der Rücksendung-Funktion in der Benutzeroberfläche" -#: common/models.py:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "Referenz Muster für Rücksendungen" -#: common/models.py:1757 +#: common/models.py:1778 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:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "Abgeschlossene Rücksendungen bearbeiten" -#: common/models.py:1765 +#: common/models.py:1786 msgid "Allow editing of return orders after they have been completed" msgstr "Bearbeitung von Rücksendungen nach Abschluss erlauben" -#: common/models.py:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "Auftragsreferenz-Muster" -#: common/models.py:1773 +#: common/models.py:1794 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:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "Auftrag Standardsendung" -#: common/models.py:1780 +#: common/models.py:1801 msgid "Enable creation of default shipment with sales orders" msgstr "Erstelle eine Standardsendung für Aufträge" -#: common/models.py:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" -msgstr "Abgeschlossene Verkaufsaufträge bearbeiten" +msgstr "Abgeschlossene Aufträge bearbeiten" -#: common/models.py:1787 +#: common/models.py:1808 msgid "Allow editing of sales orders after they have been shipped or completed" -msgstr "Bearbeitung von Verkaufsaufträgen nach Versand oder Abschluss erlauben" +msgstr "Bearbeitung von Aufträgen nach Versand oder Abschluss erlauben" -#: common/models.py:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "Bestellungsreferenz-Muster" -#: common/models.py:1795 +#: common/models.py:1816 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:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "Abgeschlossene Einkaufsaufträge bearbeiten" -#: common/models.py:1803 +#: common/models.py:1824 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:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "Bestellungen automatisch abschließen" -#: common/models.py:1811 +#: common/models.py:1832 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:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "Passwort vergessen aktivieren" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" msgstr "Passwort-vergessen-Funktion auf den Anmeldeseiten aktivieren" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "Registrierung erlauben" -#: common/models.py:1825 +#: common/models.py:1846 msgid "Enable self-registration for users on the login pages" msgstr "Selbstregistrierung für Benutzer auf den Anmeldeseiten aktivieren" -#: common/models.py:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "SSO aktivieren" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "SSO auf den Anmeldeseiten aktivieren" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "SSO Selbstregistrierung aktivieren" -#: common/models.py:1838 +#: common/models.py:1859 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:1844 +#: common/models.py:1865 msgid "Email required" msgstr "Email-Adresse erforderlich" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "Benutzer müssen bei der Registrierung eine E-Mail angeben" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "SSO-Benutzer automatisch ausfüllen" -#: common/models.py:1852 +#: common/models.py:1873 msgid "Automatically fill out user-details from SSO account-data" msgstr "Benutzer-Details automatisch aus SSO-Konto ausfüllen" -#: common/models.py:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "E-Mail zweimal" -#: common/models.py:1859 +#: common/models.py:1880 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:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "Passwort zweimal" -#: common/models.py:1865 +#: common/models.py:1886 msgid "On signup ask users twice for their password" msgstr "Bei der Registrierung den Benutzer zweimal nach dem Passwort fragen" -#: common/models.py:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "Erlaubte Domains" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "Anmeldung auf bestimmte Domänen beschränken (kommagetrennt, beginnend mit @)" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "Gruppe bei Registrierung" -#: common/models.py:1879 +#: common/models.py:1900 msgid "Group to which new users are assigned on registration" msgstr "Gruppe der neue Benutzer bei der Registrierung zugewiesen werden" -#: common/models.py:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "MFA erzwingen" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "Benutzer müssen Multifaktor-Authentifizierung verwenden." -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "Plugins beim Start prüfen" -#: common/models.py:1892 +#: common/models.py:1913 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:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "Nach Plugin-Aktualisierungen suchen" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "Periodische Überprüfungen auf Updates für installierte Plugins aktivieren" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "URL-Integration aktivieren" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "Plugins zum Hinzufügen von URLs aktivieren" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "Navigations-Integration aktivieren" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "Plugins zur Integration in die Navigation aktivieren" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "App-Integration aktivieren" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "Plugins zum Hinzufügen von Apps aktivieren" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "Terminplan-Integration aktivieren" -#: common/models.py:1929 +#: common/models.py:1950 msgid "Enable plugins to run scheduled tasks" msgstr "Geplante Aufgaben aktivieren" -#: common/models.py:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "Ereignis-Integration aktivieren" -#: common/models.py:1936 +#: common/models.py:1957 msgid "Enable plugins to respond to internal events" msgstr "Plugins ermöglichen auf interne Ereignisse zu reagieren" -#: common/models.py:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "Projektcodes aktivieren" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "Aktiviere Projektcodes für die Verfolgung von Projekten" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "Inventurfunktionen" -#: common/models.py:1950 +#: common/models.py:1971 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:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "Externe Standorte ausschließen" -#: common/models.py:1958 +#: common/models.py:1979 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:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "Automatische Inventur-Periode" -#: common/models.py:1966 +#: common/models.py:1987 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:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "Löschintervall für Berichte" -#: common/models.py:1974 +#: common/models.py:1995 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:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "Vollständige Namen von Benutzern anzeigen" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" msgstr "Vollständigen Namen von Benutzern anstatt Benutzername anzeigen" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "Blockieren bis Test bestanden" -#: common/models.py:1989 +#: common/models.py:2010 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:2002 common/models.py:2402 +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "Teststation-Daten aktivieren" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "Teststation-Datenerfassung für Testergebnisse aktivieren" + +#: common/models.py:2029 common/models.py:2429 msgid "Settings key (must be unique - case insensitive" msgstr "Einstellungs-Schlüssel (muss einzigartig sein, Groß-/ Kleinschreibung wird nicht beachtet)" -#: common/models.py:2043 +#: common/models.py:2070 msgid "Hide inactive parts" msgstr "Inaktive Teile ausblenden" -#: common/models.py:2045 +#: common/models.py:2072 msgid "Hide inactive parts in results displayed on the homepage" msgstr "Ausblenden inaktiver Teile in den auf der Startseite angezeigten Ergebnissen" -#: common/models.py:2051 +#: common/models.py:2078 msgid "Show subscribed parts" msgstr "Abonnierte Teile anzeigen" -#: common/models.py:2052 +#: common/models.py:2079 msgid "Show subscribed parts on the homepage" msgstr "Zeige abonnierte Teile auf der Startseite" -#: common/models.py:2057 +#: common/models.py:2084 msgid "Show subscribed categories" msgstr "Abonnierte Kategorien anzeigen" -#: common/models.py:2058 +#: common/models.py:2085 msgid "Show subscribed part categories on the homepage" msgstr "Zeige abonnierte Teilkategorien auf der Startseite" -#: common/models.py:2063 +#: common/models.py:2090 msgid "Show latest parts" msgstr "Neueste Teile anzeigen" -#: common/models.py:2064 +#: common/models.py:2091 msgid "Show latest parts on the homepage" msgstr "Zeige neueste Teile auf der Startseite" -#: common/models.py:2069 +#: common/models.py:2096 msgid "Show unvalidated BOMs" msgstr "Nicht validierte Stücklisten anzeigen" -#: common/models.py:2070 +#: common/models.py:2097 msgid "Show BOMs that await validation on the homepage" msgstr "Zeige Stücklisten, die noch nicht validiert sind, auf der Startseite" -#: common/models.py:2075 +#: common/models.py:2102 msgid "Show recent stock changes" msgstr "Neueste Bestandänderungen anzeigen" -#: common/models.py:2076 +#: common/models.py:2103 msgid "Show recently changed stock items on the homepage" msgstr "Zeige zuletzt geänderte Lagerbestände auf der Startseite" -#: common/models.py:2081 +#: common/models.py:2108 msgid "Show low stock" msgstr "Niedrigen Bestand anzeigen" -#: common/models.py:2082 +#: common/models.py:2109 msgid "Show low stock items on the homepage" msgstr "Zeige geringen Bestand auf der Startseite" -#: common/models.py:2087 +#: common/models.py:2114 msgid "Show depleted stock" msgstr "Lerren Bestand anzeigen" -#: common/models.py:2088 +#: common/models.py:2115 msgid "Show depleted stock items on the homepage" msgstr "Zeige aufgebrauchte Lagerartikel auf der Startseite" -#: common/models.py:2093 +#: common/models.py:2120 msgid "Show needed stock" msgstr "Benötigten Bestand anzeigen" -#: common/models.py:2094 +#: common/models.py:2121 msgid "Show stock items needed for builds on the homepage" msgstr "Zeige Bestand für Bauaufträge auf der Startseite" -#: common/models.py:2099 +#: common/models.py:2126 msgid "Show expired stock" msgstr "Abgelaufenen Bestand anzeigen" -#: common/models.py:2100 +#: common/models.py:2127 msgid "Show expired stock items on the homepage" msgstr "Zeige abgelaufene Lagerbestände auf der Startseite" -#: common/models.py:2105 +#: common/models.py:2132 msgid "Show stale stock" msgstr "Alten Bestand anzeigen" -#: common/models.py:2106 +#: common/models.py:2133 msgid "Show stale stock items on the homepage" msgstr "Zeige überfällige Lagerartikel auf der Startseite" -#: common/models.py:2111 +#: common/models.py:2138 msgid "Show pending builds" msgstr "Ausstehende Bauaufträge anzeigen" -#: common/models.py:2112 +#: common/models.py:2139 msgid "Show pending builds on the homepage" msgstr "Zeige ausstehende Bauaufträge auf der Startseite" -#: common/models.py:2117 +#: common/models.py:2144 msgid "Show overdue builds" msgstr "Zeige überfällige Bauaufträge" -#: common/models.py:2118 +#: common/models.py:2145 msgid "Show overdue builds on the homepage" msgstr "Zeige überfällige Bauaufträge auf der Startseite" -#: common/models.py:2123 +#: common/models.py:2150 msgid "Show outstanding POs" msgstr "Ausstehende POs anzeigen" -#: common/models.py:2124 +#: common/models.py:2151 msgid "Show outstanding POs on the homepage" msgstr "Zeige ausstehende POs auf der Startseite" -#: common/models.py:2129 +#: common/models.py:2156 msgid "Show overdue POs" msgstr "Überfällige POs anzeigen" -#: common/models.py:2130 +#: common/models.py:2157 msgid "Show overdue POs on the homepage" msgstr "Zeige überfällige POs auf der Startseite" -#: common/models.py:2135 +#: common/models.py:2162 msgid "Show outstanding SOs" msgstr "Ausstehende SOs anzeigen" -#: common/models.py:2136 +#: common/models.py:2163 msgid "Show outstanding SOs on the homepage" msgstr "Zeige ausstehende SOs auf der Startseite" -#: common/models.py:2141 +#: common/models.py:2168 msgid "Show overdue SOs" msgstr "Überfällige SOs anzeigen" -#: common/models.py:2142 +#: common/models.py:2169 msgid "Show overdue SOs on the homepage" msgstr "Zeige überfällige SOs auf der Startseite" -#: common/models.py:2147 +#: common/models.py:2174 msgid "Show pending SO shipments" msgstr "Ausstehende Versandaufträge anzeigen" -#: common/models.py:2148 +#: common/models.py:2175 msgid "Show pending SO shipments on the homepage" msgstr "Ausstehende Versandaufträge auf der Startseite anzeigen" -#: common/models.py:2153 +#: common/models.py:2180 msgid "Show News" msgstr "Zeige Neuigkeiten" -#: common/models.py:2154 +#: common/models.py:2181 msgid "Show news on the homepage" msgstr "Neuigkeiten auf der Startseite anzeigen" -#: common/models.py:2159 +#: common/models.py:2186 msgid "Inline label display" msgstr "Label inline anzeigen" -#: common/models.py:2161 +#: common/models.py:2188 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:2167 +#: common/models.py:2194 msgid "Default label printer" msgstr "Standard-Etikettendrucker" -#: common/models.py:2169 +#: common/models.py:2196 msgid "Configure which label printer should be selected by default" msgstr "Einen standardmäßig ausgewählten Etikettendrucker konfigurieren" -#: common/models.py:2175 +#: common/models.py:2202 msgid "Inline report display" msgstr "Berichte inline anzeigen" -#: common/models.py:2177 +#: common/models.py:2204 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:2183 +#: common/models.py:2210 msgid "Search Parts" msgstr "Teile suchen" -#: common/models.py:2184 +#: common/models.py:2211 msgid "Display parts in search preview window" msgstr "Teile in der Suchvorschau anzeigen" -#: common/models.py:2189 +#: common/models.py:2216 msgid "Search Supplier Parts" msgstr "Zulieferteile durchsuchen" -#: common/models.py:2190 +#: common/models.py:2217 msgid "Display supplier parts in search preview window" msgstr "Zuliefererteile in der Suchvorschau anzeigen" -#: common/models.py:2195 +#: common/models.py:2222 msgid "Search Manufacturer Parts" msgstr "Herstellerteile durchsuchen" -#: common/models.py:2196 +#: common/models.py:2223 msgid "Display manufacturer parts in search preview window" msgstr "Herstellerteile in der Suchvorschau anzeigen" -#: common/models.py:2201 +#: common/models.py:2228 msgid "Hide Inactive Parts" msgstr "Inaktive Teile ausblenden" -#: common/models.py:2202 +#: common/models.py:2229 msgid "Excluded inactive parts from search preview window" msgstr "Inaktive Teile in der Suchvorschau ausblenden" -#: common/models.py:2207 +#: common/models.py:2234 msgid "Search Categories" msgstr "Kategorien durchsuchen" -#: common/models.py:2208 +#: common/models.py:2235 msgid "Display part categories in search preview window" msgstr "Teilekategorien in der Suchvorschau anzeigen" -#: common/models.py:2213 +#: common/models.py:2240 msgid "Search Stock" msgstr "Bestand durchsuchen" -#: common/models.py:2214 +#: common/models.py:2241 msgid "Display stock items in search preview window" msgstr "Lagerartikel in Suchvorschau anzeigen" -#: common/models.py:2219 +#: common/models.py:2246 msgid "Hide Unavailable Stock Items" msgstr "Nicht verfügbare Artikel ausblenden" -#: common/models.py:2221 +#: common/models.py:2248 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:2227 +#: common/models.py:2254 msgid "Search Locations" msgstr "Lagerorte durchsuchen" -#: common/models.py:2228 +#: common/models.py:2255 msgid "Display stock locations in search preview window" msgstr "Lagerorte in Suchvorschau anzeigen" -#: common/models.py:2233 +#: common/models.py:2260 msgid "Search Companies" msgstr "Firmen durchsuchen" -#: common/models.py:2234 +#: common/models.py:2261 msgid "Display companies in search preview window" msgstr "Firmen in der Suchvorschau anzeigen" -#: common/models.py:2239 +#: common/models.py:2266 msgid "Search Build Orders" msgstr "Bauaufträge durchsuchen" -#: common/models.py:2240 +#: common/models.py:2267 msgid "Display build orders in search preview window" msgstr "Bauaufträge in der Suchvorschau anzeigen" -#: common/models.py:2245 +#: common/models.py:2272 msgid "Search Purchase Orders" msgstr "Bestellungen durchsuchen" -#: common/models.py:2246 +#: common/models.py:2273 msgid "Display purchase orders in search preview window" msgstr "Bestellungen in der Suchvorschau anzeigen" -#: common/models.py:2251 +#: common/models.py:2278 msgid "Exclude Inactive Purchase Orders" msgstr "Inaktive Bestellungen ausblenden" -#: common/models.py:2253 +#: common/models.py:2280 msgid "Exclude inactive purchase orders from search preview window" msgstr "Inaktive Bestellungen in der Suchvorschau ausblenden" -#: common/models.py:2259 +#: common/models.py:2286 msgid "Search Sales Orders" msgstr "Aufträge durchsuchen" -#: common/models.py:2260 +#: common/models.py:2287 msgid "Display sales orders in search preview window" msgstr "Aufträge in der Suchvorschau anzeigen" -#: common/models.py:2265 +#: common/models.py:2292 msgid "Exclude Inactive Sales Orders" msgstr "Inaktive Aufträge ausblenden" -#: common/models.py:2267 +#: common/models.py:2294 msgid "Exclude inactive sales orders from search preview window" msgstr "Inaktive Aufträge in der Suchvorschau ausblenden" -#: common/models.py:2273 +#: common/models.py:2300 msgid "Search Return Orders" msgstr "Suche nach Rücksendungen" -#: common/models.py:2274 +#: common/models.py:2301 msgid "Display return orders in search preview window" msgstr "Rücksendungen in der Suchvorschau anzeigen" -#: common/models.py:2279 +#: common/models.py:2306 msgid "Exclude Inactive Return Orders" msgstr "Inaktive Rücksendungen ausblenden" -#: common/models.py:2281 +#: common/models.py:2308 msgid "Exclude inactive return orders from search preview window" msgstr "Inaktive Rücksendungen in der Suchvorschau ausblenden" -#: common/models.py:2287 +#: common/models.py:2314 msgid "Search Preview Results" msgstr "Anzahl Suchergebnisse" -#: common/models.py:2289 +#: common/models.py:2316 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:2295 +#: common/models.py:2322 msgid "Regex Search" msgstr "Regex Suche" -#: common/models.py:2296 +#: common/models.py:2323 msgid "Enable regular expressions in search queries" msgstr "Reguläre Ausdrücke in Suchabfragen aktivieren" -#: common/models.py:2301 +#: common/models.py:2328 msgid "Whole Word Search" msgstr "Ganzes Wort suchen" -#: common/models.py:2302 +#: common/models.py:2329 msgid "Search queries return results for whole word matches" msgstr "Suchabfragen liefern Ergebnisse für ganze Wortkombinationen" -#: common/models.py:2307 +#: common/models.py:2334 msgid "Show Quantity in Forms" msgstr "zeige Bestand in Eingabemasken" -#: common/models.py:2308 +#: common/models.py:2335 msgid "Display available part quantity in some forms" msgstr "Zeige den verfügbaren Bestand in einigen Eingabemasken" -#: common/models.py:2313 +#: common/models.py:2340 msgid "Escape Key Closes Forms" msgstr "Esc-Taste schließt Formulare" -#: common/models.py:2314 +#: common/models.py:2341 msgid "Use the escape key to close modal forms" msgstr "Benutze die Esc-Taste, um Formulare zu schließen" -#: common/models.py:2319 +#: common/models.py:2346 msgid "Fixed Navbar" msgstr "Fixierter Navigationsleiste" -#: common/models.py:2320 +#: common/models.py:2347 msgid "The navbar position is fixed to the top of the screen" msgstr "Position der Navigationsleiste am oberen Bildschirmrand fixieren" -#: common/models.py:2325 +#: common/models.py:2352 msgid "Date Format" msgstr "Datumsformat" -#: common/models.py:2326 +#: common/models.py:2353 msgid "Preferred format for displaying dates" msgstr "Bevorzugtes Format für die Anzeige von Daten" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2366 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Teilzeitplanung" -#: common/models.py:2340 +#: common/models.py:2367 msgid "Display part scheduling information" msgstr "Zeige Zeitplanung für Teile" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2372 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Inventur" -#: common/models.py:2347 +#: common/models.py:2374 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "Zeigt Inventur-Informationen an (falls die Inventurfunktion aktiviert ist)" -#: common/models.py:2353 +#: common/models.py:2380 msgid "Table String Length" msgstr "Zeichenkettenlänge in Tabellen" -#: common/models.py:2355 +#: common/models.py:2382 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:2361 +#: common/models.py:2388 msgid "Default part label template" msgstr "Standardvorlage für Teilebeschriftung" -#: common/models.py:2362 +#: common/models.py:2389 msgid "The part label template to be automatically selected" msgstr "Die Teil-Etikettenvorlage, die automatisch ausgewählt werden soll" -#: common/models.py:2367 +#: common/models.py:2394 msgid "Default stock item template" msgstr "Lagerartikel-Standardvorlage" -#: common/models.py:2369 +#: common/models.py:2396 msgid "The stock item label template to be automatically selected" msgstr "Die Lagerartikel-Etikettenvorlage soll automatisch ausgewählt werden" -#: common/models.py:2375 +#: common/models.py:2402 msgid "Default stock location label template" msgstr "Standardetikettenvorlage für Lagerstandort" -#: common/models.py:2377 +#: common/models.py:2404 msgid "The stock location label template to be automatically selected" msgstr "Die Lagerstandort-Etikettenvorlage, die automatisch ausgewählt werden soll" -#: common/models.py:2383 +#: common/models.py:2410 msgid "Receive error reports" msgstr "Fehlerberichte empfangen" -#: common/models.py:2384 +#: common/models.py:2411 msgid "Receive notifications for system errors" msgstr "Benachrichtigungen bei Systemfehlern erhalten" -#: common/models.py:2389 +#: common/models.py:2416 msgid "Last used printing machines" msgstr "Zuletzt verwendete Druckmaschinen" -#: common/models.py:2390 +#: common/models.py:2417 msgid "Save the last used printing machines for a user" msgstr "Die zuletzt benutzten Druckmaschinen für einen Benutzer speichern" -#: common/models.py:2433 +#: common/models.py:2460 msgid "Price break quantity" msgstr "Preisstaffelungs Anzahl" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3503,23 +3536,23 @@ msgstr "Preisstaffelungs Anzahl" msgid "Price" msgstr "Preis" -#: common/models.py:2441 +#: common/models.py:2468 msgid "Unit price at specified quantity" msgstr "Stückpreis für die angegebene Anzahl" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2639 common/models.py:2824 msgid "Endpoint" msgstr "Endpunkt" -#: common/models.py:2613 +#: common/models.py:2640 msgid "Endpoint at which this webhook is received" msgstr "Endpunkt, an dem dieser Webhook empfangen wird" -#: common/models.py:2623 +#: common/models.py:2650 msgid "Name for this webhook" msgstr "Name für diesen Webhook" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3529,101 +3562,101 @@ msgstr "Name für diesen Webhook" msgid "Active" msgstr "Aktiv" -#: common/models.py:2627 +#: common/models.py:2654 msgid "Is this webhook active" msgstr "Ist dieser Webhook aktiv" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2670 users/models.py:148 msgid "Token" msgstr "Token" -#: common/models.py:2644 +#: common/models.py:2671 msgid "Token for access" msgstr "Token für Zugang" -#: common/models.py:2652 +#: common/models.py:2679 msgid "Secret" msgstr "Geheimnis" -#: common/models.py:2653 +#: common/models.py:2680 msgid "Shared secret for HMAC" msgstr "Shared Secret für HMAC" -#: common/models.py:2761 +#: common/models.py:2788 msgid "Message ID" msgstr "Nachrichten-ID" -#: common/models.py:2762 +#: common/models.py:2789 msgid "Unique identifier for this message" msgstr "Eindeutige Kennung für diese Nachricht" -#: common/models.py:2770 +#: common/models.py:2797 msgid "Host" msgstr "Host" -#: common/models.py:2771 +#: common/models.py:2798 msgid "Host from which this message was received" msgstr "Host von dem diese Nachricht empfangen wurde" -#: common/models.py:2779 +#: common/models.py:2806 msgid "Header" msgstr "Kopfzeile" -#: common/models.py:2780 +#: common/models.py:2807 msgid "Header of this message" msgstr "Header dieser Nachricht" -#: common/models.py:2787 +#: common/models.py:2814 msgid "Body" msgstr "Body" -#: common/models.py:2788 +#: common/models.py:2815 msgid "Body of this message" msgstr "Body dieser Nachricht" -#: common/models.py:2798 +#: common/models.py:2825 msgid "Endpoint on which this message was received" msgstr "Endpunkt, über den diese Nachricht empfangen wurde" -#: common/models.py:2803 +#: common/models.py:2830 msgid "Worked on" msgstr "Bearbeitet" -#: common/models.py:2804 +#: common/models.py:2831 msgid "Was the work on this message finished?" msgstr "Wurde die Arbeit an dieser Nachricht abgeschlossen?" -#: common/models.py:2930 +#: common/models.py:2957 msgid "Id" msgstr "ID" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2959 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "Titel" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2963 templates/js/translated/news.js:60 msgid "Published" msgstr "Veröffentlicht" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2965 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2967 templates/js/translated/news.js:52 msgid "Summary" msgstr "Zusammenfassung" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Read" msgstr "Gelesen" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Was this news item read?" msgstr "Wurde diese Nachricht gelesen?" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2987 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3633,31 +3666,31 @@ msgstr "Wurde diese Nachricht gelesen?" msgid "Image" msgstr "Bild" -#: common/models.py:2960 +#: common/models.py:2987 msgid "Image file" msgstr "Bilddatei" -#: common/models.py:3002 +#: common/models.py:3029 msgid "Unit name must be a valid identifier" msgstr "Einheitsname muss eine gültige Kennung sein" -#: common/models.py:3021 +#: common/models.py:3048 msgid "Unit name" msgstr "Einheitsname" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "Symbol" -#: common/models.py:3029 +#: common/models.py:3056 msgid "Optional unit symbol" msgstr "Optionales Einheitssymbol" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "Definition" -#: common/models.py:3037 +#: common/models.py:3064 msgid "Unit definition" msgstr "Einheitsdefinition" @@ -3961,7 +3994,7 @@ msgid "Link to address information (external)" msgstr "Link zu Adressinformationen (extern)" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Basisteil" @@ -3972,7 +4005,7 @@ msgstr "Teil auswählen" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3987,7 +4020,7 @@ msgid "Select manufacturer" msgstr "Hersteller auswählen" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4022,9 +4055,9 @@ msgstr "Parametername" #: company/models.py:615 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2438 templates/js/translated/company.js:1156 +#: stock/models.py:2441 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1519 msgid "Value" msgstr "Wert" @@ -4033,7 +4066,7 @@ msgid "Parameter value" msgstr "Parameterwert" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4059,7 +4092,7 @@ msgstr "Verlinktes Herstellerteil muss dasselbe Basisteil referenzieren" #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4076,7 +4109,7 @@ msgstr "Zulieferer" msgid "Select supplier" msgstr "Zulieferer auswählen" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "Lagerbestandseinheit (SKU) des Zulieferers" @@ -4093,13 +4126,13 @@ msgid "Supplier part description" msgstr "Zuliefererbeschreibung des Teils" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4066 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:579 msgid "Note" msgstr "Notiz" @@ -4112,10 +4145,10 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "Mindestpreis" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 -#: templates/js/translated/stock.js:2387 +#: templates/js/translated/stock.js:2423 msgid "Packaging" msgstr "Verpackungen" @@ -4157,7 +4190,7 @@ msgstr "Verfügbarkeit aktualisiert" msgid "Date of last update of availability data" msgstr "Datum des letzten Updates der Verfügbarkeitsdaten" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "Standard-Währung für diesen Zulieferer" @@ -4218,13 +4251,13 @@ msgstr "Bild löschen" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1100 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 #: templates/js/translated/return_order.js:296 #: templates/js/translated/sales_order.js:784 -#: templates/js/translated/stock.js:2923 +#: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:804 msgid "Customer" msgstr "Kunde" @@ -4429,8 +4462,9 @@ 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/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "Zulieferer" @@ -4482,7 +4516,7 @@ msgstr "Adressen" #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2243 +#: templates/js/translated/stock.js:2279 msgid "Supplier Part" msgstr "Zuliefererteil" @@ -4528,7 +4562,7 @@ 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:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4577,15 +4611,17 @@ msgstr "Barcode mit Zulieferteil verknüpfen" msgid "Update Part Availability" msgstr "Verfügbarkeit der Teile aktualisieren" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 -#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:193 msgid "Stock Items" msgstr "Lagerartikel" @@ -4639,8 +4675,8 @@ msgstr "Label" msgid "Label template file" msgstr "Label-Vorlage-Datei" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "Aktiviert" @@ -4665,7 +4701,7 @@ msgstr "Höhe [mm]" msgid "Label height, specified in mm" msgstr "Label-Höhe in mm" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "Dateinamen-Muster" @@ -4679,8 +4715,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "Filter" @@ -4821,7 +4857,7 @@ msgstr "Keine passende Bestellung gefunden" #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1674 -#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "Bestellung" @@ -4830,7 +4866,7 @@ msgstr "Bestellung" #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 -#: templates/js/translated/stock.js:2905 +#: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "Rücksendeauftrag" @@ -4838,11 +4874,11 @@ msgstr "Rücksendeauftrag" msgid "Total price for this order" msgstr "Gesamtpreis für diese Bestellung" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "Auftragswährung" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" msgstr "Währung für diesen Auftrag (leer lassen, um Firmenstandard zu verwenden)" @@ -5029,9 +5065,9 @@ msgstr "Empfangen" msgid "Number of items received" msgstr "Empfangene Objekt-Anzahl" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2274 +#: templates/js/translated/stock.js:2310 msgid "Purchase Price" msgstr "Preis" @@ -5084,8 +5120,8 @@ msgstr "Kontrolliert von" msgid "User who checked this shipment" msgstr "Benutzer, der diese Sendung kontrolliert hat" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "Sendung" @@ -5133,7 +5169,7 @@ msgstr "Kann Lagerartikel keiner Zeile ohne Teil hinzufügen" msgid "Allocation quantity cannot exceed stock quantity" msgstr "Die zugeordnete Anzahl darf nicht die verfügbare Anzahl überschreiten" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "Anzahl für serialisierte Lagerartikel muss 1 sein" @@ -5207,159 +5243,159 @@ msgstr "Ergebnis für dieses Zeilenelement" 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:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "Bestellung kann nicht verworfen werden" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" msgstr "Erlaube das Schließen des Auftrags mit unvollständigen Positionen" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "Auftrag hat unvollständige Positionen" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "Der Auftrag ist nicht offen" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "Automatische Preisgestaltung" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "Kaufpreis automatisch basierend auf Lieferantenbestandsdaten berechnen" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "Kaufpreiswährung" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "Elemente zusammenfügen" -#: order/serializers.py:449 +#: order/serializers.py:471 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:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "Zuliefererteil muss ausgewählt werden" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "Bestellung muss angegeben sein" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "Lieferant muss mit der Bestellung übereinstimmen" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "Die Bestellung muss mit dem Lieferant übereinstimmen" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "Position" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "Position stimmt nicht mit Kaufauftrag überein" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "Zielort für empfangene Teile auswählen" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "Losnummer für eingehende Lagerartikel" -#: order/serializers.py:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "Seriennummern für eingehende Lagerartikel" -#: order/serializers.py:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Barcode" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "Gescannter Barcode" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "Barcode ist bereits in Verwendung" -#: order/serializers.py:610 +#: order/serializers.py:632 msgid "An integer quantity must be provided for trackable parts" msgstr "Ganzzahl für verfolgbare Teile erforderlich" -#: order/serializers.py:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "Positionen müssen angegeben werden" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "Ziel-Lagerort muss angegeben werden" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "Barcode muss eindeutig sein" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "Verkaufspreis-Währung" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "Keine Sendungsdetails angegeben" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "Position ist nicht diesem Auftrag zugeordnet" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "Anzahl muss positiv sein" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "Seriennummern zum Zuweisen eingeben" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "Sendung wurde bereits versandt" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "Sendung ist nicht diesem Auftrag zugeordnet" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "Folgende Serienummern konnten nicht gefunden werden" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "Folgende Seriennummern sind bereits zugewiesen" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "Artikel der Bestellzeile zurücksenden" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" msgstr "Artikel entspricht nicht der Rücksendeschrift" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "Artikel wurde bereits erhalten" -#: order/serializers.py:1655 +#: order/serializers.py:1677 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:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "Verkaufspreis-Währung" @@ -5693,7 +5729,7 @@ msgstr "Bestelldetails" #: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" -msgstr "Verkaufsauftragsbericht drucken" +msgstr "Auftragsbericht drucken" #: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 @@ -5717,7 +5753,7 @@ msgstr "Abgeschlossene Sendungen" #: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" -msgstr "Verkaufsauftrag QR-Code" +msgstr "Auftrag QR-Code" #: order/templates/order/sales_order_base.html:324 msgid "Link Barcode to Sales Order" @@ -5733,7 +5769,7 @@ msgid "Pending Shipments" msgstr "Ausstehende Sendungen" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "Aktionen" @@ -5763,12 +5799,12 @@ 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:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3917 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "Teil-ID" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3918 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "Name des Teils" @@ -5780,12 +5816,12 @@ msgstr "Beschreibung des Teils" #: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 -#: templates/js/translated/stock.js:1999 +#: templates/js/translated/stock.js:2035 msgid "IPN" msgstr "IPN (Interne Produktnummer)" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "Version" @@ -5861,10 +5897,10 @@ msgstr "Name des übergeordneten Teils" msgid "Category Path" msgstr "Pfad zur Kategorie" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -5885,17 +5921,17 @@ msgstr "Stücklisten-Position ID" msgid "Parent IPN" msgstr "Übergeordnete IPN" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3919 msgid "Part IPN" msgstr "Teil IPN" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "Niedrigster Preis" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5973,8 +6009,8 @@ msgstr "Gesamte Stückliste validieren" msgid "This option must be selected" msgstr "Diese Option muss ausgewählt werden" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3862 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5982,12 +6018,17 @@ msgstr "Diese Option muss ausgewählt werden" msgid "Category" msgstr "Kategorie" +#: part/api.py:1828 +msgid "Uses" +msgstr "Verwendet" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Standard-Lagerort" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "Gesamtbestand" @@ -5995,7 +6036,7 @@ msgstr "Gesamtbestand" msgid "Input quantity for price calculation" msgstr "Menge für die Preisberechnung" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3863 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Teil-Kategorie" @@ -6010,7 +6051,8 @@ msgstr "Teil-Kategorien" msgid "Default location for parts in this category" msgstr "Standard-Lagerort für Teile dieser Kategorie" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 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" @@ -6048,12 +6090,12 @@ msgstr "Ungültige Auswahl für übergeordnetes Teil" #: part/models.py:531 part/models.py:538 #, python-brace-format msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" -msgstr "Teil '{self}' kann im BOM nicht für '{parent}' (rekursiv) verwendet werden" +msgstr "Teil '{self}' kann in der Stückliste nicht für '{parent}' (rekursiv) verwendet werden" #: part/models.py:550 #, python-brace-format msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" -msgstr "Teil '{parent}' wird im BOM für '{self}' (rekursiv) verwendet" +msgstr "Teil '{parent}' wird in der Stückliste für '{self}' (rekursiv) verwendet" #: part/models.py:615 #, python-brace-format @@ -6076,7 +6118,7 @@ msgstr "Teil mit diesem Namen, IPN und Revision existiert bereits." msgid "Parts cannot be assigned to structural part categories!" msgstr "Strukturellen Teilekategorien können keine Teile zugewiesen werden!" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3918 msgid "Part name" msgstr "Name des Teils" @@ -6358,7 +6400,7 @@ msgstr "Insgesamt verfügbarer Lagerbestand zum Zeitpunkt der Inventur" #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1732 -#: templates/js/translated/stock.js:2785 +#: templates/js/translated/stock.js:2821 msgid "Date" msgstr "Datum" @@ -6410,586 +6452,602 @@ msgstr "Anzahl der Teile, die von der Inventur abgedeckt werden" msgid "User who requested this stocktake report" msgstr "Benutzer, der diesen Inventurbericht angefordert hat" -#: part/models.py:3438 +#: part/models.py:3434 +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:3445 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:3448 -msgid "Test with this name already exists for this part" -msgstr "Ein Test mit diesem Namen besteht bereits für dieses Teil" +#: part/models.py:3456 +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:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "Test-Name" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "Namen für diesen Test eingeben" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "Testschlüssel" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "Vereinfachter Schlüssel zum Test" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "Test-Beschreibung" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "Beschreibung für diesen Test eingeben" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "Ist dieser Test aktiviert?" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Benötigt" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "Muss dieser Test erfolgreich sein?" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "Erfordert Wert" -#: part/models.py:3496 +#: part/models.py:3505 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:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "Anhang muss eingegeben werden" -#: part/models.py:3503 +#: part/models.py:3512 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:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "Checkbox-Parameter können keine Einheiten haben" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "Checkbox-Parameter können keine Auswahl haben" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "Auswahl muss einzigartig sein" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "Vorlagen-Name des Parameters muss eindeutig sein" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "Name des Parameters" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "Physikalische Einheiten für diesen Parameter" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "Parameter-Beschreibung" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "Checkbox" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "Ist dieser Parameter eine Checkbox?" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "Auswahlmöglichkeiten" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "Gültige Optionen für diesen Parameter (durch Kommas getrennt)" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "Ungültige Auswahl für Parameterwert" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "Ausgangsteil" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3870 part/models.py:3871 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "Parameter Vorlage" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "Wert" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "Parameter Wert" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3877 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "Standard-Wert" -#: part/models.py:3847 +#: part/models.py:3878 msgid "Default Parameter Value" msgstr "Standard Parameter Wert" -#: part/models.py:3885 +#: part/models.py:3916 msgid "Part ID or part name" msgstr "Teilnummer oder Teilname" -#: part/models.py:3886 +#: part/models.py:3917 msgid "Unique part ID value" msgstr "Eindeutige Teil-ID" -#: part/models.py:3888 +#: part/models.py:3919 msgid "Part IPN value" msgstr "IPN-Wert des Teils" -#: part/models.py:3889 +#: part/models.py:3920 msgid "Level" msgstr "Stufe" -#: part/models.py:3889 +#: part/models.py:3920 msgid "BOM level" msgstr "Stücklistenebene" -#: part/models.py:3979 +#: part/models.py:4010 msgid "Select parent part" msgstr "Ausgangsteil auswählen" -#: part/models.py:3989 +#: part/models.py:4020 msgid "Sub part" msgstr "Untergeordnetes Teil" -#: part/models.py:3990 +#: part/models.py:4021 msgid "Select part to be used in BOM" msgstr "Teil für die Nutzung in der Stückliste auswählen" -#: part/models.py:4001 +#: part/models.py:4032 msgid "BOM quantity for this BOM item" msgstr "Stücklisten-Anzahl für dieses Stücklisten-Teil" -#: part/models.py:4007 +#: part/models.py:4038 msgid "This BOM item is optional" msgstr "Diese Stücklisten-Position ist optional" -#: part/models.py:4013 +#: part/models.py:4044 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:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4051 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Überschuss" -#: part/models.py:4021 +#: part/models.py:4052 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Geschätzter Ausschuss (absolut oder prozentual)" -#: part/models.py:4028 +#: part/models.py:4059 msgid "BOM item reference" msgstr "Referenz der Postion auf der Stückliste" -#: part/models.py:4036 +#: part/models.py:4067 msgid "BOM item notes" msgstr "Notizen zur Stücklisten-Position" -#: part/models.py:4042 +#: part/models.py:4073 msgid "Checksum" msgstr "Prüfsumme" -#: part/models.py:4043 +#: part/models.py:4074 msgid "BOM line checksum" msgstr "Prüfsumme der Stückliste" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4079 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "überprüft" -#: part/models.py:4049 +#: part/models.py:4080 msgid "This BOM item has been validated" msgstr "Diese Stücklistenposition wurde validiert" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4085 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:4055 +#: part/models.py:4086 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:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4091 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Varianten zulassen" -#: part/models.py:4061 +#: part/models.py:4092 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:4146 stock/models.py:649 +#: part/models.py:4177 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" msgstr "Menge muss eine Ganzzahl sein" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4187 part/models.py:4189 msgid "Sub part must be specified" msgstr "Zuliefererteil muss festgelegt sein" -#: part/models.py:4298 +#: part/models.py:4329 msgid "BOM Item Substitute" msgstr "Stücklisten Ersatzteile" -#: part/models.py:4319 +#: part/models.py:4350 msgid "Substitute part cannot be the same as the master part" msgstr "Ersatzteil kann nicht identisch mit dem Hauptteil sein" -#: part/models.py:4332 +#: part/models.py:4363 msgid "Parent BOM item" msgstr "Übergeordnete Stücklisten Position" -#: part/models.py:4340 +#: part/models.py:4371 msgid "Substitute part" msgstr "Ersatzteil" -#: part/models.py:4356 +#: part/models.py:4387 msgid "Part 1" msgstr "Teil 1" -#: part/models.py:4364 +#: part/models.py:4395 msgid "Part 2" msgstr "Teil 2" -#: part/models.py:4365 +#: part/models.py:4396 msgid "Select Related Part" msgstr "verknüpftes Teil auswählen" -#: part/models.py:4384 +#: part/models.py:4415 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:4389 +#: part/models.py:4420 msgid "Duplicate relationship already exists" msgstr "Doppelte Beziehung existiert bereits" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "Ergebnisse" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "Anzahl der Ergebnisse, die in dieser Vorlage aufgezeichnet wurden" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 msgid "Purchase currency of this stock item" msgstr "Kaufwährung dieses Lagerartikels" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "Anzahl der Teile, die diese Vorlage verwenden" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "Keine Teile ausgewählt" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "Kategorie auswählen" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "Originalteil" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "Originalteil zum Duplizieren auswählen" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "Bild kopieren" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "Bild vom Originalteil kopieren" -#: part/serializers.py:432 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:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "Stückliste vom Originalteil kopieren" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "Parameter kopieren" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "Parameterdaten vom Originalteil kopieren" -#: part/serializers.py:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "Anmerkungen kopieren" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "Notizen aus Originalteil kopieren" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "Start-Bestandsmenge" -#: part/serializers.py:462 +#: part/serializers.py:480 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:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "Initialer Lagerort" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "Lagerstandort für dieses Teil angeben" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "Lieferant auswählen (oder leer lassen, um zu überspringen)" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "Hersteller auswählen (oder leer lassen, um zu überspringen)" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "Hersteller-Teilenummer" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "Ausgewählte Firma ist kein gültiger Lieferant" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "Ausgewählte Firma ist kein gültiger Hersteller" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "Herstellerteil mit dieser MPN existiert bereits" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "Lieferantenteil mit dieser SKU existiert bereits" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "Externes Lager" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "Nicht zugewiesenes Lager" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "Alternatives Lager" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "Teil duplizieren" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "Initiale Daten von anderem Teil kopieren" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "Initialer Lagerbestand" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "Erstelle Teil mit Ausgangsbestand" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "Lieferanteninformationen" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "Lieferanteninformationen zu diesem Teil hinzufügen" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "Kategorieparameter kopieren" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" msgstr "Parametervorlagen aus der ausgewählten Teilkategorie kopieren" -#: part/serializers.py:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "Vorhandenes Bild" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "Dateiname eines vorhandenen Teilbildes" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "Bilddatei existiert nicht" -#: part/serializers.py:1068 +#: part/serializers.py:1104 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:1078 +#: part/serializers.py:1114 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:1088 +#: part/serializers.py:1124 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:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "Externen Bestand ausschließen" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "Lagerartikel an externen Orten ausschließen" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "Bericht generieren" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "Erstelle Berichtsdatei mit berechneten Inventurdaten" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "Teile aktualisieren" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "Angegebene Teile mit berechneten Inventurdaten aktualisieren" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "Inventur-Funktionalität ist nicht aktiviert" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "Berechneten Wert für Mindestpreis überschreiben" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "Mindestpreis Währung" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "Berechneten Wert für maximalen Preis überschreiben" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "Maximalpreis Währung" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "Aktualisieren" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "Preis für dieses Teil aktualisieren" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, 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:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "Mindestpreis darf nicht größer als der Maximalpreis sein" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "Der Maximalpreis darf nicht kleiner als der Mindestpreis sein" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "Teil auswählen, von dem Stückliste kopiert wird" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "Bestehende Daten entfernen" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" msgstr "Bestehende Stücklisten-Positionen vor dem Kopieren entfernen" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "Vererbtes einschließen" -#: part/serializers.py:1647 +#: part/serializers.py:1693 msgid "Include BOM items which are inherited from templated parts" msgstr "Stücklisten-Positionen einbeziehen, die von Vorlage-Teilen geerbt werden" -#: part/serializers.py:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "Ungültige Zeilen überspringen" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "Aktiviere diese Option, um ungültige Zeilen zu überspringen" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "Ersatzteile kopieren" -#: part/serializers.py:1659 +#: part/serializers.py:1705 msgid "Copy substitute parts when duplicate BOM items" msgstr "Ersatzteile beim Duplizieren von Stücklisten-Positionen kopieren" -#: part/serializers.py:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "Bestehende Stückliste löschen" -#: part/serializers.py:1694 +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "Bestehende Stücklisten-Positionen vor dem Importieren entfernen" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "Keine Teilspalte angegeben" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "Mehrere übereinstimmende Teile gefunden" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "Keine passenden Teile gefunden" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "Teil ist nicht als Komponente angelegt" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "Menge nicht angegeben" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "Ungültige Menge" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "Mindestens eine Stückliste-Position ist erforderlich" @@ -7147,7 +7205,7 @@ 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 #: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/stock.js:2179 users/models.py:191 +#: templates/js/translated/stock.js:2215 users/models.py:191 msgid "Stocktake" msgstr "Inventur" @@ -7221,7 +7279,7 @@ msgid "Validate BOM" msgstr "Stückliste überprüfen" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "Stücklisten-Position hinzufügen" @@ -7405,7 +7463,7 @@ msgstr "Zu Bauaufträgen zugeordnet" msgid "Allocated to Sales Orders" msgstr "Zur Bestellung zugeordnet" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "Herstellbar" @@ -7509,7 +7567,7 @@ msgstr "Varianten" #: templates/InvenTree/settings/sidebar.html:51 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 -#: templates/js/translated/stock.js:2033 templates/navbar.html:31 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 msgid "Stock" msgstr "Bestand" @@ -7555,7 +7613,7 @@ msgstr "Bearbeiten" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 -#: templates/js/translated/stock.js:2209 +#: templates/js/translated/stock.js:2245 msgid "Last Updated" msgstr "Zuletzt aktualisiert" @@ -7872,15 +7930,15 @@ msgstr "Labeldruck fehlgeschlagen" #: plugin/base/label/mixins.py:63 msgid "Error rendering label to PDF" -msgstr "Fehler beim Rendern des Labels als PDF" +msgstr "Fehler beim Rendern des Etikett als PDF" #: plugin/base/label/mixins.py:76 msgid "Error rendering label to HTML" -msgstr "Fehler beim Rendern des Labels als HTML" +msgstr "Fehler beim Rendern des Etikett als HTML" #: plugin/base/label/mixins.py:111 msgid "Error rendering label to PNG" -msgstr "Fehler beim Rendern des Labels als PNG" +msgstr "Fehler beim Rendern des Etikett als PNG" #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" @@ -7981,7 +8039,7 @@ msgstr "Optionen" #: plugin/builtin/labels/label_sheet.py:29 msgid "Page size for the label sheet" -msgstr "Seitengröße für das Labelblatt" +msgstr "Seitengröße für das Etikett" #: plugin/builtin/labels/label_sheet.py:34 msgid "Skip Labels" @@ -7999,7 +8057,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:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "Querformat" @@ -8077,7 +8135,7 @@ msgstr "Nur Mitarbeiter können Plugins verwalten" #: plugin/installer.py:197 msgid "Plugin installation is disabled" -msgstr "" +msgstr "Plugin-Installation ist deaktiviert" #: plugin/installer.py:248 msgid "Installed plugin successfully" @@ -8102,7 +8160,7 @@ msgstr "Plugin-Paketname nicht gefunden" #: plugin/installer.py:299 msgid "Plugin uninstalling is disabled" -msgstr "" +msgstr "Plugin-Deinstallation ist deaktiviert" #: plugin/installer.py:303 msgid "Plugin cannot be uninstalled as it is currently active" @@ -8170,7 +8228,7 @@ msgstr "Plugin" msgid "Method" msgstr "Methode" -#: plugin/plugin.py:264 +#: plugin/plugin.py:270 msgid "No author found" msgstr "Kein Autor gefunden" @@ -8307,16 +8365,16 @@ msgstr "Konfiguration löschen" msgid "Delete the plugin configuration from the database" msgstr "Plugin-Konfiguration aus der Datenbank löschen" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "Keine korrekten Objekte für Vorlage gegeben" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "Vorlagendatei '{template}' fehlt oder existiert nicht" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "Testbericht" @@ -8336,103 +8394,111 @@ msgstr "US-Legal" msgid "Letter" msgstr "US-Letter" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "Vorlagen Name" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "Bericht-Vorlage Datei" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "Bericht-Vorlage Beschreibung" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "Bericht Revisionsnummer (autom. erhöht)" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "Seitengröße für PDF-Berichte" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "Bericht in Querformat anzeigen" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "Muster für die Erstellung von Berichtsdateinamen" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "Bericht-Vorlage ist ein" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "Lagerartikel-Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "einfügen Installiert in Tests" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "Test-Ergebnisse für Lagerartikel in Baugruppen einschließen" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "Bauauftrag Filter" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "Bau-Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "Teil Filter" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "Teile-Abfragefilter (kommagetrennte Liste mit Schlüssel=Wert-Paaren)" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "Bestellungs-Abfragefilter" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "Auftrags-Abfragefilter" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "Rückgabe von Auftragsabfragefiltern" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "Snippet-Datei mit diesem Namen existiert bereits" + +#: report/models.py:647 msgid "Snippet" msgstr "Snippet" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "Berichts-Snippet" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "Snippet-Beschreibung" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "Eine Datei mit diesem Namen existiert bereits" + +#: report/models.py:721 msgid "Asset" msgstr "Ressource" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "Berichts-Ressource" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "Ressource-Beschreibung" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "Filter für standortbezogene Abfragen (kommaseparierte Liste von Schlüssel=Wert-Paaren)" @@ -8488,7 +8554,7 @@ msgstr "Seriennummer" #: report/templates/report/inventree_slr_report.html:97 msgid "Stock location items" -msgstr "Lagerstandort Elemente" +msgstr "Lagerstandorte" #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" @@ -8499,12 +8565,12 @@ msgid "Test Results" msgstr "Testergebnisse" #: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1492 msgid "Test" msgstr "Test" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Result" msgstr "Ergebnis" @@ -8531,7 +8597,7 @@ msgstr "Verbaute Objekte" #: report/templates/report/inventree_test_report_base.html:168 #: stock/admin.py:162 templates/js/translated/stock.js:700 -#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110 msgid "Serial" msgstr "Seriennummer" @@ -8615,7 +8681,7 @@ msgstr "Löschen wenn leer" #: stock/admin.py:256 stock/models.py:886 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2193 users/models.py:113 +#: templates/js/translated/stock.js:2229 users/models.py:113 msgid "Expiry Date" msgstr "Ablaufdatum" @@ -8641,7 +8707,7 @@ msgstr "Externer Standort" #: stock/api.py:753 msgid "Part Tree" -msgstr "Teilbaum" +msgstr "Teile-Baum" #: stock/api.py:781 msgid "Expiry date before" @@ -8713,7 +8779,7 @@ msgstr "Besitzer auswählen" 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:174 templates/js/translated/stock.js:2745 +#: stock/models.py:174 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "Extern" @@ -8722,7 +8788,7 @@ msgstr "Extern" msgid "This is an external stock location" msgstr "Dies ist ein externer Lagerort" -#: stock/models.py:181 templates/js/translated/stock.js:2754 +#: stock/models.py:181 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "Standorttyp" @@ -8739,7 +8805,7 @@ msgstr "Sie können diesen Lagerort nicht als strukturell markieren, da sich ber msgid "Stock items cannot be located into structural stock locations!" msgstr "Lagerartikel können nicht in strukturelle Lagerorte abgelegt werden!" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:290 msgid "Stock item cannot be created for virtual parts" msgstr "Für virtuelle Teile können keine Lagerartikel erstellt werden" @@ -8784,7 +8850,7 @@ msgstr "Passendes Zuliefererteil für diesen Lagerartikel auswählen" msgid "Where is this stock item located?" msgstr "Wo wird dieses Teil normalerweise gelagert?" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1351 msgid "Packaging this stock item is stored in" msgstr "Verpackung, in der dieser Lagerartikel gelagert ist" @@ -8796,7 +8862,7 @@ msgstr "Ist dieses Teil in einem anderen verbaut?" msgid "Serial number for this item" msgstr "Seriennummer für dieses Teil" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1334 msgid "Batch code for this stock item" msgstr "Losnummer für diesen Lagerartikel" @@ -8873,7 +8939,7 @@ msgstr "Seriennummern muss eine Liste von Ganzzahlen sein" msgid "Quantity does not match serial numbers" msgstr "Anzahl stimmt nicht mit den Seriennummern überein" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:529 msgid "Serial numbers already exist" msgstr "Seriennummern existieren bereits" @@ -8905,7 +8971,7 @@ msgstr "Lagerartikel wird aktuell produziert" msgid "Serialized stock cannot be merged" msgstr "Nachverfolgbare Lagerartikel können nicht zusammengeführt werden" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1240 msgid "Duplicate stock items" msgstr "Artikel duplizeren" @@ -8929,207 +8995,236 @@ msgstr "Lagerartikel kann nicht bewegt werden, da kein Bestand vorhanden ist" msgid "Entry notes" msgstr "Eintrags-Notizen" -#: stock/models.py:2399 +#: stock/models.py:2402 msgid "Value must be provided for this test" msgstr "Wert muss für diesen Test angegeben werden" -#: stock/models.py:2405 +#: stock/models.py:2408 msgid "Attachment must be uploaded for this test" msgstr "Anhang muss für diesen Test hochgeladen werden" -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Test result" msgstr "Testergebnis" -#: stock/models.py:2439 +#: stock/models.py:2442 msgid "Test output value" msgstr "Test Ausgabe Wert" -#: stock/models.py:2447 +#: stock/models.py:2450 msgid "Test result attachment" msgstr "Test Ergebnis Anhang" -#: stock/models.py:2451 +#: stock/models.py:2454 msgid "Test notes" msgstr "Test Notizen" -#: stock/serializers.py:96 +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "Teststation" + +#: stock/models.py:2463 +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:2469 +msgid "Started" +msgstr "Gestartet" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "Der Zeitstempel des Teststarts" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "Fertiggestellt" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "Der Zeitstempel der Test-Beendigung" + +#: stock/serializers.py:100 msgid "Test template for this result" msgstr "Testvorlage für dieses Ergebnis" -#: stock/serializers.py:115 +#: stock/serializers.py:119 msgid "Template ID or test name must be provided" msgstr "Vorlagen-ID oder Testname muss angegeben werden" -#: stock/serializers.py:169 +#: stock/serializers.py:151 +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:184 msgid "Serial number is too large" msgstr "Seriennummer ist zu lang" -#: stock/serializers.py:267 +#: stock/serializers.py:282 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:380 +#: stock/serializers.py:402 msgid "Purchase price of this stock item, per unit or pack" msgstr "Einkaufspreis dieses Lagerartikels, pro Einheit oder Verpackungseinheit" -#: stock/serializers.py:442 +#: stock/serializers.py:464 msgid "Enter number of stock items to serialize" msgstr "Anzahl der zu serialisierenden Lagerartikel eingeben" -#: stock/serializers.py:455 +#: stock/serializers.py:477 #, 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:462 +#: stock/serializers.py:484 msgid "Enter serial numbers for new items" msgstr "Seriennummern für neue Teile eingeben" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 msgid "Destination stock location" msgstr "Ziel-Bestand" -#: stock/serializers.py:480 +#: stock/serializers.py:502 msgid "Optional note field" msgstr "Optionales Notizfeld" -#: stock/serializers.py:490 +#: stock/serializers.py:512 msgid "Serial numbers cannot be assigned to this part" msgstr "Seriennummern können diesem Teil nicht zugewiesen werden" -#: stock/serializers.py:545 +#: stock/serializers.py:567 msgid "Select stock item to install" msgstr "Lagerartikel für Installation auswählen" -#: stock/serializers.py:552 +#: stock/serializers.py:574 msgid "Quantity to Install" msgstr "Zu installierende Menge" -#: stock/serializers.py:553 +#: stock/serializers.py:575 msgid "Enter the quantity of items to install" -msgstr "" +msgstr "Anzahl der zu verwendenden Artikel eingeben" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 msgid "Add transaction note (optional)" msgstr " Transaktionsnotizen hinzufügen (optional)" -#: stock/serializers.py:566 +#: stock/serializers.py:588 msgid "Quantity to install must be at least 1" -msgstr "" +msgstr "Die zu verwendende Menge muss mindestens 1 sein" -#: stock/serializers.py:574 +#: stock/serializers.py:596 msgid "Stock item is unavailable" msgstr "Lagerartikel ist nicht verfügbar" -#: stock/serializers.py:581 +#: stock/serializers.py:607 msgid "Selected part is not in the Bill of Materials" msgstr "Ausgewähltes Teil ist nicht in der Stückliste" -#: stock/serializers.py:593 +#: stock/serializers.py:620 msgid "Quantity to install must not exceed available quantity" -msgstr "" +msgstr "Die zu verwendende Menge darf die verfügbare Menge nicht überschreiten" -#: stock/serializers.py:628 +#: stock/serializers.py:655 msgid "Destination location for uninstalled item" msgstr "Ziel Lagerort für unverbautes Objekt" -#: stock/serializers.py:663 +#: stock/serializers.py:690 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:676 +#: stock/serializers.py:703 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:693 +#: stock/serializers.py:720 msgid "Cannot convert stock item with assigned SupplierPart" -msgstr "" +msgstr "Lagerartikel konnte nicht mit Zulieferteil zugewiesen werden" -#: stock/serializers.py:724 +#: stock/serializers.py:751 msgid "Destination location for returned item" msgstr "Ziel Lagerort für zurückgegebene Artikel" -#: stock/serializers.py:761 +#: stock/serializers.py:788 msgid "Select stock items to change status" msgstr "Lagerartikel auswählen, um den Status zu ändern" -#: stock/serializers.py:767 +#: stock/serializers.py:794 msgid "No stock items selected" msgstr "Keine Lagerartikel ausgewählt" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Unter-Lagerorte" -#: stock/serializers.py:1036 +#: stock/serializers.py:1069 msgid "Part must be salable" msgstr "Teil muss verkaufbar sein" -#: stock/serializers.py:1040 +#: stock/serializers.py:1073 msgid "Item is allocated to a sales order" msgstr "Artikel ist einem Kundenauftrag zugeordnet" -#: stock/serializers.py:1044 +#: stock/serializers.py:1077 msgid "Item is allocated to a build order" msgstr "Artikel ist einem Fertigungsauftrag zugeordnet" -#: stock/serializers.py:1068 +#: stock/serializers.py:1101 msgid "Customer to assign stock items" msgstr "Kunde zum Zuweisen von Lagerartikel" -#: stock/serializers.py:1074 +#: stock/serializers.py:1107 msgid "Selected company is not a customer" msgstr "Ausgewählte Firma ist kein Kunde" -#: stock/serializers.py:1082 +#: stock/serializers.py:1115 msgid "Stock assignment notes" msgstr "Notizen zur Lagerzuordnung" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1125 stock/serializers.py:1379 msgid "A list of stock items must be provided" msgstr "Eine Liste der Lagerbestände muss angegeben werden" -#: stock/serializers.py:1171 +#: stock/serializers.py:1204 msgid "Stock merging notes" msgstr "Notizen zur Lagerartikelzusammenführung" -#: stock/serializers.py:1176 +#: stock/serializers.py:1209 msgid "Allow mismatched suppliers" msgstr "Unterschiedliche Lieferanten erlauben" -#: stock/serializers.py:1177 +#: stock/serializers.py:1210 msgid "Allow stock items with different supplier parts to be merged" msgstr "Zusammenführen von Lagerartikeln mit unterschiedlichen Lieferanten erlauben" -#: stock/serializers.py:1182 +#: stock/serializers.py:1215 msgid "Allow mismatched status" msgstr "Unterschiedliche Status erlauben" -#: stock/serializers.py:1183 +#: stock/serializers.py:1216 msgid "Allow stock items with different status codes to be merged" msgstr "Zusammenführen von Lagerartikeln mit unterschiedlichen Status-Codes erlauben" -#: stock/serializers.py:1193 +#: stock/serializers.py:1226 msgid "At least two stock items must be provided" msgstr "Mindestens zwei Lagerartikel müssen angegeben werden" -#: stock/serializers.py:1260 +#: stock/serializers.py:1293 msgid "No Change" msgstr "Keine Änderung" -#: stock/serializers.py:1289 +#: stock/serializers.py:1322 msgid "StockItem primary key value" msgstr "Primärschlüssel Lagerelement" -#: stock/serializers.py:1308 +#: stock/serializers.py:1341 msgid "Stock item status code" -msgstr "" +msgstr "Lagerartikel Status-Code" -#: stock/serializers.py:1336 +#: stock/serializers.py:1369 msgid "Stock transaction notes" msgstr "Bestandsbewegungsnotizen" @@ -9154,7 +9249,7 @@ msgstr "Testdaten" msgid "Test Report" msgstr "Test-Bericht" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 msgid "Delete Test Data" msgstr "Testdaten löschen" @@ -9170,15 +9265,15 @@ msgstr "Lagerartikel-Notizen" msgid "Installed Stock Items" msgstr "Installierte Lagerartikel" -#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 msgid "Install Stock Item" msgstr "Lagerartikel installieren" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:274 msgid "Delete all test results for this stock item" msgstr "Alle Testergebnisse für diesen Lagerartikel löschen" -#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 msgid "Add Test Result" msgstr "Testergebnis hinzufügen" @@ -9201,17 +9296,17 @@ msgid "Stock adjustment actions" msgstr "Bestands-Anpassungs Aktionen" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 msgid "Count stock" msgstr "Bestand zählen" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:1803 msgid "Add stock" msgstr "Bestand hinzufügen" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1776 +#: templates/js/translated/stock.js:1812 msgid "Remove stock" msgstr "Bestand entfernen" @@ -9220,12 +9315,12 @@ msgid "Serialize stock" msgstr "Bestand serialisieren" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 msgid "Transfer stock" msgstr "Bestand verschieben" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1884 msgid "Assign to customer" msgstr "Kunden zuweisen" @@ -9309,7 +9404,7 @@ msgstr "Dieser Lagerartikel ist einem Bauauftrag zugewiesen" #: stock/templates/stock/item_base.html:311 msgid "This stock item is serialized. It has a unique serial number and the quantity cannot be adjusted" -msgstr "" +msgstr "Dieser Lagerartikel hat eine eindeutige Seriennummer, der Bestand kann nicht geändert werden" #: stock/templates/stock/item_base.html:317 msgid "previous page" @@ -9364,7 +9459,7 @@ msgid "No stocktake performed" msgstr "Keine Inventur ausgeführt" #: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1915 +#: templates/js/translated/stock.js:1951 msgid "stock item" msgstr "Lagerartikel" @@ -9469,13 +9564,13 @@ msgid "New Location" msgstr "Neuer Lagerort" #: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2536 +#: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "Lagerort" #: stock/templates/stock/location.html:315 msgid "Scanned stock container into this location" -msgstr "" +msgstr "Lagerbehälter an diesen Ort eingescannt" #: stock/templates/stock/location.html:388 msgid "Stock Location QR Code" @@ -9483,7 +9578,7 @@ msgstr "Lagerort QR-Code" #: stock/templates/stock/location.html:399 msgid "Link Barcode to Stock Location" -msgstr "" +msgstr "Barcode mit Lagerort verknüpfen" #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." @@ -9569,7 +9664,7 @@ msgstr "Neueste Teile" #: templates/InvenTree/index.html:77 msgid "BOM Waiting Validation" -msgstr "" +msgstr "Ausstehende Überprüfung der Stückliste" #: templates/InvenTree/index.html:106 msgid "Recently Updated" @@ -9577,7 +9672,7 @@ msgstr "Kürzlich aktualisiert" #: templates/InvenTree/index.html:134 msgid "Depleted Stock" -msgstr "" +msgstr "Verbrauchter Bestand" #: templates/InvenTree/index.html:148 msgid "Required for Build Orders" @@ -9589,7 +9684,7 @@ msgstr "Abgelaufener Bestand" #: templates/InvenTree/index.html:172 msgid "Stale Stock" -msgstr "" +msgstr "Veralteter Bestand" #: templates/InvenTree/index.html:199 msgid "Build Orders In Progress" @@ -10063,7 +10158,7 @@ msgid "Delete Location Type" msgstr "Standorttyp löschen" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:37 msgid "New Location Type" msgstr "Neuer Standorttyp" @@ -10120,7 +10215,7 @@ msgstr "Auftrags-Einstellungen" msgid "Stock Settings" msgstr "Bestands-Einstellungen" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:33 msgid "Stock Location Types" msgstr "Lagerstandort Elemente" @@ -10376,7 +10471,7 @@ msgstr "Aktualisierung verfügbar" #: templates/about.html:43 msgid "Commit Branch" -msgstr "" +msgstr "Commit-Branch" #: templates/about.html:49 msgid "InvenTree Documentation" @@ -10662,7 +10757,7 @@ msgid "The following parts are low on required stock" msgstr "Bei den folgenden Teilen gibt es wenige Lagerartikel" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "Benötigte Menge" @@ -10676,7 +10771,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:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "Mindestmenge" @@ -10690,67 +10785,67 @@ msgstr "Keine Antwort vom InvenTree Server" #: templates/js/translated/api.js:232 msgid "Error 400: Bad request" -msgstr "" +msgstr "Fehler 400: Ungültige Anforderung" #: templates/js/translated/api.js:233 msgid "API request returned error code 400" -msgstr "" +msgstr "API Anfrage hat Fehler 400 zurückgegeben" #: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 msgid "Error 401: Not Authenticated" -msgstr "" +msgstr "Fehler 401: Nicht authentifiziert" #: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 msgid "Authentication credentials not supplied" -msgstr "" +msgstr "Anmeldeinformationen nicht angegeben" #: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 msgid "Error 403: Permission Denied" -msgstr "" +msgstr "Fehler 403: Zugriff verweigert" #: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 msgid "You do not have the required permissions to access this function" -msgstr "" +msgstr "Sie haben nicht die erforderliche Berechtigung auf diesen Inhalt zuzugreifen" #: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 msgid "Error 404: Resource Not Found" -msgstr "" +msgstr "Fehler 404: Ressource nicht gefunden" #: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 msgid "The requested resource could not be located on the server" -msgstr "" +msgstr "Die angefragte Ressource konnte auf dem Server nicht gefunden werden" #: templates/js/translated/api.js:252 msgid "Error 405: Method Not Allowed" -msgstr "" +msgstr "Fehler 405: Methode nicht erlaubt" #: templates/js/translated/api.js:253 msgid "HTTP method not allowed at URL" -msgstr "" +msgstr "HTTP Methode für diese URL nicht erlaubt" #: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 msgid "Error 408: Timeout" -msgstr "" +msgstr "Fehler 408: Zeitüberschreitung" #: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 msgid "Connection timeout while requesting data from server" -msgstr "" +msgstr "Zeitüberschreitung beim Abfragen der Daten vom Server" #: templates/js/translated/api.js:261 msgid "Error 503: Service Unavailable" -msgstr "" +msgstr "Fehler 503: Service nicht verfügbar" #: templates/js/translated/api.js:262 msgid "The server is currently unavailable" -msgstr "" +msgstr "Der Server ist derzeit nicht erreichbar" #: templates/js/translated/api.js:265 msgid "Unhandled Error Code" -msgstr "" +msgstr "Unbehandelter Fehlercode" #: templates/js/translated/api.js:266 msgid "Error code" -msgstr "" +msgstr "Fehlercode" #: templates/js/translated/attachment.js:114 msgid "All selected attachments will be deleted" @@ -10766,7 +10861,7 @@ msgstr "Anhänge löschen" #: templates/js/translated/attachment.js:253 msgid "Attachment actions" -msgstr "Anhang Aktionen" +msgstr "Anhang-Aktionen" #: templates/js/translated/attachment.js:275 msgid "No attachments found" @@ -10814,16 +10909,16 @@ msgstr "Serverfehler" #: templates/js/translated/barcode.js:217 msgid "Unknown response from server" -msgstr "" +msgstr "Unbekannte Serverantwort" #: templates/js/translated/barcode.js:252 #: templates/js/translated/modals.js:1120 msgid "Invalid server response" -msgstr "" +msgstr "Ungültige Serverantwort" #: templates/js/translated/barcode.js:372 msgid "Scan barcode data" -msgstr "" +msgstr "Barcode Daten scannen" #: templates/js/translated/barcode.js:420 templates/navbar.html:114 msgid "Scan Barcode" @@ -10831,7 +10926,7 @@ msgstr "Barcode scannen" #: templates/js/translated/barcode.js:458 msgid "No URL in response" -msgstr "" +msgstr "Keine URL in der Antwort" #: templates/js/translated/barcode.js:498 msgid "This will remove the link to the associated barcode" @@ -10839,77 +10934,77 @@ msgstr "Dadurch wird der Link zu dem zugehörigen Barcode entfernt" #: templates/js/translated/barcode.js:504 msgid "Unlink" -msgstr "" +msgstr "Verknüpfung aufheben" #: templates/js/translated/barcode.js:567 templates/js/translated/stock.js:1155 msgid "Remove stock item" -msgstr "" +msgstr "Lagerartikel entfernen" #: templates/js/translated/barcode.js:610 msgid "Scan Stock Items Into Location" -msgstr "" +msgstr "Artikel per Barcode-Scan zu Lagerort hinzufügen" #: templates/js/translated/barcode.js:612 msgid "Scan stock item barcode to check in to this location" -msgstr "" +msgstr "Barcode des Lagerartikels scannen um ihn an diesen Ort hinzuzufügen" #: templates/js/translated/barcode.js:615 #: templates/js/translated/barcode.js:812 msgid "Check In" -msgstr "" +msgstr "Einbuchen" #: templates/js/translated/barcode.js:647 msgid "No barcode provided" -msgstr "" +msgstr "Kein Barcode vorhanden" #: templates/js/translated/barcode.js:687 msgid "Stock Item already scanned" -msgstr "" +msgstr "Lagerartikel bereits gescannt" #: templates/js/translated/barcode.js:691 msgid "Stock Item already in this location" -msgstr "" +msgstr "Lagerartikel bereits an diesem Standort vorhanden" #: templates/js/translated/barcode.js:698 msgid "Added stock item" -msgstr "" +msgstr "Lagerartikel hinzugefügt" #: templates/js/translated/barcode.js:707 msgid "Barcode does not match valid stock item" -msgstr "" +msgstr "Barcode entspricht keinem Lagerartikel" #: templates/js/translated/barcode.js:726 msgid "Scan Stock Container Into Location" -msgstr "" +msgstr "Lagerbehälter an diesen Ort einscannen" #: templates/js/translated/barcode.js:728 msgid "Scan stock container barcode to check in to this location" -msgstr "" +msgstr "Barcode des Lagerbehälters scannen um ihn an diesen Ort hinzuzufügen" #: templates/js/translated/barcode.js:762 msgid "Barcode does not match valid stock location" -msgstr "" +msgstr "Barcode entspricht keinem gültigen Lagerort" #: templates/js/translated/barcode.js:806 msgid "Check Into Location" -msgstr "" +msgstr "Zu Lagerort hinzufügen" #: templates/js/translated/barcode.js:875 #: templates/js/translated/barcode.js:884 msgid "Barcode does not match a valid location" -msgstr "" +msgstr "Barcode entspricht keinem Lagerort" #: templates/js/translated/bom.js:78 msgid "Create BOM Item" -msgstr "" +msgstr "Stücklisten-Position anlegen" #: templates/js/translated/bom.js:132 msgid "Display row data" -msgstr "" +msgstr "Zeilendaten anzeigen" #: templates/js/translated/bom.js:188 msgid "Row Data" -msgstr "" +msgstr "Zeilendaten" #: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 #: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 @@ -10925,19 +11020,19 @@ msgstr "Vorlage einer Stückliste herunterladen" #: templates/js/translated/bom.js:351 msgid "Multi Level BOM" -msgstr "" +msgstr "Mehrstufige Stückliste" #: templates/js/translated/bom.js:352 msgid "Include BOM data for subassemblies" -msgstr "" +msgstr "Stücklistendaten für Untergruppen einbeziehen" #: templates/js/translated/bom.js:357 msgid "Levels" -msgstr "" +msgstr "Stufen" #: templates/js/translated/bom.js:358 msgid "Select maximum number of BOM levels to export (0 = all levels)" -msgstr "" +msgstr "Wählen Sie die maximale Anzahl an zu exportierenden Stücklistenstufen (0 = alle Stufen)" #: templates/js/translated/bom.js:365 msgid "Include Alternative Parts" @@ -10961,7 +11056,7 @@ msgstr "Bestand einschließen" #: templates/js/translated/bom.js:378 msgid "Include part stock data in exported BOM" -msgstr "" +msgstr "Teilebestand in exportierte Stückliste einbeziehen" #: templates/js/translated/bom.js:383 msgid "Include Manufacturer Data" @@ -11033,7 +11128,7 @@ msgstr "Ersatzteile verfügbar" #: templates/js/translated/bom.js:950 templates/js/translated/build.js:2501 msgid "Variant stock allowed" -msgstr "" +msgstr "Alternatives Lager erlaubt" #: templates/js/translated/bom.js:1014 msgid "Substitutes" @@ -11041,439 +11136,443 @@ msgstr "Ersatzteile" #: templates/js/translated/bom.js:1139 msgid "BOM pricing is complete" -msgstr "" +msgstr "Stücklistenpreise sind vollständig" #: templates/js/translated/bom.js:1144 msgid "BOM pricing is incomplete" -msgstr "" +msgstr "Stücklistenpreise sind vollständig" #: templates/js/translated/bom.js:1151 msgid "No pricing available" msgstr "Keine Preisinformation verfügbar" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "Externes Lager" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "Kein Lagerbestand verfügbar" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" -msgstr "" +msgstr "Alternatives Lager und Ersatzteillager einschließen" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" -msgstr "" +msgstr "Alternatives Lager einschließen" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" -msgstr "" +msgstr "Ersatzteillager einschließen" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "Verbrauchsartikel" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "Stücklisten-Position kontrollieren" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "Diese Position wurde kontrolliert" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "Ersatzteile bearbeiten" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "Stücklisten-Position bearbeiten" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "Stücklisten-Position löschen" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "Stückliste anzeigen" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" -msgstr "" +msgstr "Keine Stücklisten-Position(en) gefunden" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" -msgstr "" +msgstr "Benötigtes Teil" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" -msgstr "" +msgstr "Von übergeordneter Stückliste geerbt" #: templates/js/translated/build.js:142 msgid "Edit Build Order" -msgstr "" +msgstr "Bauauftrag bearbeiten" #: templates/js/translated/build.js:190 msgid "Create Build Order" -msgstr "" +msgstr "Bauauftrag erstellen" #: templates/js/translated/build.js:222 msgid "Cancel Build Order" -msgstr "" +msgstr "Bauauftrag abbrechen" #: templates/js/translated/build.js:231 msgid "Are you sure you wish to cancel this build?" -msgstr "" +msgstr "Sind Sie sicher, dass sie diesen Bauauftrag abbrechen möchten?" #: templates/js/translated/build.js:237 msgid "Stock items have been allocated to this build order" -msgstr "" +msgstr "Lagerartikel wurden zu diesem Bauauftrag hinzugefügt" #: templates/js/translated/build.js:244 msgid "There are incomplete outputs remaining for this build order" -msgstr "" +msgstr "Es sind noch unvollständige Artikel für diesen Bauauftrag vorhanden" #: templates/js/translated/build.js:296 msgid "Build order is ready to be completed" -msgstr "" +msgstr "Bauauftrag ist bereit abgeschlossen zu werden" #: templates/js/translated/build.js:304 msgid "This build order cannot be completed as there are incomplete outputs" -msgstr "" +msgstr "Dieser Bauauftrag kann nicht abgeschlossen werden, da es unfertige Endprodukte gibt" #: templates/js/translated/build.js:309 msgid "Build Order is incomplete" -msgstr "" +msgstr "Bauauftrag ist unvollständig" #: templates/js/translated/build.js:327 msgid "Complete Build Order" -msgstr "" +msgstr "Bauauftrag fertigstellen" #: templates/js/translated/build.js:368 templates/js/translated/stock.js:119 #: templates/js/translated/stock.js:294 msgid "Next available serial number" -msgstr "" +msgstr "Nächste verfügbare Seriennummer" #: templates/js/translated/build.js:370 templates/js/translated/stock.js:121 #: templates/js/translated/stock.js:296 msgid "Latest serial number" -msgstr "" +msgstr "Letzte Seriennummer" #: templates/js/translated/build.js:379 msgid "The Bill of Materials contains trackable parts" -msgstr "" +msgstr "Die Stückliste enthält verfolgbare Teile" #: templates/js/translated/build.js:380 msgid "Build outputs must be generated individually" -msgstr "" +msgstr "Endprodukte müssen individuell angelegt werden" #: templates/js/translated/build.js:388 msgid "Trackable parts can have serial numbers specified" -msgstr "" +msgstr "Nachverfolgbare Teile können Seriennummern haben" #: templates/js/translated/build.js:389 msgid "Enter serial numbers to generate multiple single build outputs" -msgstr "" +msgstr "Seriennummern für mehrere einzelne Endprodukte angeben" #: templates/js/translated/build.js:396 msgid "Create Build Output" -msgstr "" +msgstr "Endprodukt anlegen" #: templates/js/translated/build.js:427 msgid "Allocate stock items to this build output" -msgstr "" +msgstr "Lagerartikel zu diesem Endprodukt zuweisen" #: templates/js/translated/build.js:435 msgid "Deallocate stock from build output" -msgstr "" +msgstr "Bestand von Endprodukt entfernen" #: templates/js/translated/build.js:444 msgid "Complete build output" -msgstr "" +msgstr "Endprodukt fertigstellen" #: templates/js/translated/build.js:452 msgid "Scrap build output" -msgstr "" +msgstr "Ausschuss Endprodukt" #: templates/js/translated/build.js:459 msgid "Delete build output" -msgstr "" +msgstr "Endprodukt entfernen" #: templates/js/translated/build.js:479 msgid "Are you sure you wish to deallocate the selected stock items from this build?" -msgstr "" +msgstr "Sind Sie sicher, dass sie alle Lagerartikel von diesem Bauauftrag entfernen möchten?" #: templates/js/translated/build.js:497 msgid "Deallocate Stock Items" -msgstr "" +msgstr "Lagerartikel entfernen" #: templates/js/translated/build.js:583 templates/js/translated/build.js:711 #: templates/js/translated/build.js:837 msgid "Select Build Outputs" -msgstr "" +msgstr "Endprodukte auswählen" #: templates/js/translated/build.js:584 templates/js/translated/build.js:712 #: templates/js/translated/build.js:838 msgid "At least one build output must be selected" -msgstr "" +msgstr "Mindestens ein Endprodukt muss ausgewählt werden" #: templates/js/translated/build.js:598 msgid "Selected build outputs will be marked as complete" -msgstr "" +msgstr "Ausgewählte Endprodukte werden als vollständig markiert" #: templates/js/translated/build.js:602 templates/js/translated/build.js:736 #: templates/js/translated/build.js:860 msgid "Output" -msgstr "" +msgstr "Endprodukt" #: templates/js/translated/build.js:630 msgid "Complete Build Outputs" -msgstr "" +msgstr "Endprodukte fertigstellen" #: templates/js/translated/build.js:727 msgid "Selected build outputs will be marked as scrapped" -msgstr "" +msgstr "Ausgewählte Endprodukte werden als Ausschuss markiert" #: templates/js/translated/build.js:729 msgid "Scrapped output are marked as rejected" -msgstr "" +msgstr "Ausschuss wird als verworfen markiert" #: templates/js/translated/build.js:730 msgid "Allocated stock items will no longer be available" -msgstr "" +msgstr "Zugewiesene Lagerbestände werden nicht mehr verfügbar sein" #: templates/js/translated/build.js:731 msgid "The completion status of the build order will not be adjusted" -msgstr "" +msgstr "Der Fertigstellungsstatus des Bauauftrags wird nicht angepasst" #: templates/js/translated/build.js:762 msgid "Scrap Build Outputs" -msgstr "" +msgstr "Ausschuss Endprodukte" #: templates/js/translated/build.js:852 msgid "Selected build outputs will be deleted" -msgstr "" +msgstr "Ausgewählte Endprodukte werden gelöscht" #: templates/js/translated/build.js:854 msgid "Build output data will be permanently deleted" -msgstr "" +msgstr "Endprodukte werden dauerhaft gelöscht" #: templates/js/translated/build.js:855 msgid "Allocated stock items will be returned to stock" -msgstr "" +msgstr "Zugewiesene Lagerartikel werden in den Bestand zurückgeführt" #: templates/js/translated/build.js:873 msgid "Delete Build Outputs" -msgstr "" +msgstr "Endprodukte entfernen" #: templates/js/translated/build.js:960 msgid "No build order allocations found" -msgstr "" +msgstr "Keine Allokationen für Bauauftrag gefunden" #: templates/js/translated/build.js:989 templates/js/translated/build.js:2342 msgid "Allocated Quantity" -msgstr "" +msgstr "Zugewiesene Menge" #: templates/js/translated/build.js:1003 msgid "Location not specified" -msgstr "" +msgstr "Standort nicht angegeben" #: templates/js/translated/build.js:1025 msgid "Complete outputs" -msgstr "" +msgstr "Endprodukte fertigstellen" #: templates/js/translated/build.js:1043 msgid "Scrap outputs" -msgstr "" +msgstr "Ausschuss" #: templates/js/translated/build.js:1061 msgid "Delete outputs" -msgstr "" +msgstr "Endprodukte löschen" #: templates/js/translated/build.js:1115 msgid "build output" -msgstr "" +msgstr "Endprodukt" #: templates/js/translated/build.js:1116 msgid "build outputs" -msgstr "" +msgstr "Endprodukte" #: templates/js/translated/build.js:1120 msgid "Build output actions" -msgstr "" +msgstr "Endprodukt-Aktionen" #: templates/js/translated/build.js:1294 msgid "No active build outputs found" -msgstr "" +msgstr "Keine aktiven Endprodukte gefunden" #: templates/js/translated/build.js:1387 msgid "Allocated Lines" -msgstr "" +msgstr "Zugewiesene Positionen" #: templates/js/translated/build.js:1401 msgid "Required Tests" -msgstr "" +msgstr "Erforderliche Prüfungen" #: templates/js/translated/build.js:1573 #: templates/js/translated/purchase_order.js:611 #: templates/js/translated/sales_order.js:1171 msgid "Select Parts" -msgstr "" +msgstr "Teile auswählen" #: templates/js/translated/build.js:1574 #: templates/js/translated/sales_order.js:1172 msgid "You must select at least one part to allocate" -msgstr "" +msgstr "Sie müssen mindestens einen Teil für die Zuweisung auswählen" #: templates/js/translated/build.js:1637 #: templates/js/translated/sales_order.js:1121 msgid "Specify stock allocation quantity" -msgstr "" +msgstr "Anzahl für Bestandszuordnung eingeben" #: templates/js/translated/build.js:1714 msgid "All Parts Allocated" -msgstr "" +msgstr "Alle Teile zugeordnet" #: templates/js/translated/build.js:1715 msgid "All selected parts have been fully allocated" -msgstr "" +msgstr "Alle ausgewählten Teile wurden vollständig zugeordnet" #: templates/js/translated/build.js:1729 #: templates/js/translated/sales_order.js:1186 msgid "Select source location (leave blank to take from all locations)" -msgstr "" +msgstr "Wählen Sie den Quellort aus (leer lassen, um von allen Standorten zu nehmen)" #: templates/js/translated/build.js:1757 msgid "Allocate Stock Items to Build Order" -msgstr "" +msgstr "Lagerartikel für Bauauftrag zuweisen" #: templates/js/translated/build.js:1768 #: templates/js/translated/sales_order.js:1283 msgid "No matching stock locations" -msgstr "" +msgstr "Keine passenden Lagerstandorte" #: templates/js/translated/build.js:1841 #: templates/js/translated/sales_order.js:1362 msgid "No matching stock items" -msgstr "" +msgstr "Keine passenden Lagerartikel" #: templates/js/translated/build.js:1938 msgid "Automatic Stock Allocation" -msgstr "" +msgstr "Automatische Lagerzuordnung" #: templates/js/translated/build.js:1939 msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" -msgstr "" +msgstr "Lagerartikel werden automatisch diesem Bauauftrag zugewiesen, entsprechend den angegebenen Richtlinien" #: templates/js/translated/build.js:1941 msgid "If a location is specified, stock will only be allocated from that location" -msgstr "" +msgstr "Wenn ein Lagerort angegeben ist, wird der Lagerbestand nur von diesem Ort zugewiesen" #: templates/js/translated/build.js:1942 msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" -msgstr "" +msgstr "Wenn der Lagerbestand als austauschbar gilt, wird er vom ersten Standort zugewiesen, an dem er gefunden wird" #: templates/js/translated/build.js:1943 msgid "If substitute stock is allowed, it will be used where stock of the primary part cannot be found" -msgstr "" +msgstr "Wenn ein Ersatzlager zugelassen ist, wird dieses verwendet, wenn das Primärteil nicht vorrätig ist" #: templates/js/translated/build.js:1974 msgid "Allocate Stock Items" -msgstr "" +msgstr "Lagerartikel zuordnen" #: templates/js/translated/build.js:2080 msgid "No builds matching query" -msgstr "" +msgstr "Keine Bauaufträge zur Suchanfrage" #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 -#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 msgid "Select" -msgstr "" +msgstr "Auswählen" #: templates/js/translated/build.js:2129 msgid "Build order is overdue" -msgstr "" +msgstr "Bauauftrag ist überfällig" #: templates/js/translated/build.js:2175 msgid "Progress" -msgstr "" +msgstr "Fortschritt" -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006 +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 msgid "No user information" -msgstr "" +msgstr "Keine Benutzerinformation" #: templates/js/translated/build.js:2387 #: templates/js/translated/sales_order.js:1646 msgid "Edit stock allocation" -msgstr "" +msgstr "Bestands-Zuordnung bearbeiten" #: templates/js/translated/build.js:2388 #: templates/js/translated/sales_order.js:1647 msgid "Delete stock allocation" -msgstr "" +msgstr "Bestands-Zuordnung löschen" #: templates/js/translated/build.js:2403 msgid "Edit Allocation" -msgstr "" +msgstr "Zuordnung bearbeiten" #: templates/js/translated/build.js:2415 msgid "Remove Allocation" -msgstr "" +msgstr "Zuordnung entfernen" #: templates/js/translated/build.js:2456 msgid "build line" -msgstr "" +msgstr "Bauauftragsposition" #: templates/js/translated/build.js:2457 msgid "build lines" -msgstr "" +msgstr "Bauauftragspositionen" #: templates/js/translated/build.js:2475 msgid "No build lines found" -msgstr "" +msgstr "Keine Bauauftragspositionen gefunden" #: templates/js/translated/build.js:2505 templates/js/translated/part.js:790 #: templates/js/translated/part.js:1202 msgid "Trackable part" -msgstr "" +msgstr "Nachverfolgbares Teil" #: templates/js/translated/build.js:2540 msgid "Unit Quantity" -msgstr "" +msgstr "Menge" #: templates/js/translated/build.js:2592 #: templates/js/translated/sales_order.js:1915 msgid "Sufficient stock available" -msgstr "" +msgstr "Ausreichender Bestand vorhanden" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" -msgstr "" +msgstr "Verbrauchsartikel" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" -msgstr "" +msgstr "Verfolgtes Objekt" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" -msgstr "" +msgstr "Bestand bauen" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 msgid "Order stock" -msgstr "" - -#: templates/js/translated/build.js:2664 -#: templates/js/translated/sales_order.js:2010 -msgid "Allocate stock" -msgstr "" +msgstr "Bestand bestellen" #: templates/js/translated/build.js:2668 +#: templates/js/translated/sales_order.js:2010 +msgid "Allocate stock" +msgstr "Bestand zuweisen" + +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" -msgstr "" +msgstr "Bestands-Zuordnung löschen" #: templates/js/translated/company.js:98 msgid "Add Manufacturer" @@ -11516,7 +11615,7 @@ msgstr "Teile geliefert" #: templates/js/translated/company.js:545 msgid "Parts Manufactured" -msgstr "" +msgstr "Hersteller-Teile" #: templates/js/translated/company.js:560 msgid "No company information found" @@ -11628,7 +11727,7 @@ msgstr "Herstellerteile löschen" #: templates/js/translated/company.js:1230 msgid "Manufacturer part actions" -msgstr "" +msgstr "Herstellerteil-Aktionen" #: templates/js/translated/company.js:1249 msgid "No manufacturer parts found" @@ -11638,13 +11737,13 @@ msgstr "Keine Herstellerteile gefunden" #: templates/js/translated/company.js:1557 templates/js/translated/part.js:798 #: templates/js/translated/part.js:1210 msgid "Template part" -msgstr "" +msgstr "Vorlagenteil" #: templates/js/translated/company.js:1273 #: templates/js/translated/company.js:1561 templates/js/translated/part.js:802 #: templates/js/translated/part.js:1214 msgid "Assembled part" -msgstr "" +msgstr "Baugruppe" #: templates/js/translated/company.js:1393 templates/js/translated/part.js:1464 msgid "No parameters found" @@ -11688,104 +11787,104 @@ msgstr "Zulieferteile bearbeiten" #: templates/js/translated/company.js:1716 msgid "Delete supplier part" -msgstr "" +msgstr "Zuliefererteil löschen" #: templates/js/translated/company.js:1769 #: templates/js/translated/pricing.js:694 msgid "Delete Price Break" -msgstr "" +msgstr "Staffelpreis löschen" #: templates/js/translated/company.js:1779 #: templates/js/translated/pricing.js:712 msgid "Edit Price Break" -msgstr "" +msgstr "Staffelpreis bearbeiten" #: templates/js/translated/company.js:1794 msgid "No price break information found" -msgstr "" +msgstr "Keine Staffelpreisinformation gefunden" #: templates/js/translated/company.js:1823 msgid "Last updated" -msgstr "" +msgstr "Zuletzt aktualisiert" #: templates/js/translated/company.js:1830 msgid "Edit price break" -msgstr "" +msgstr "Staffelpreis bearbeiten" #: templates/js/translated/company.js:1831 msgid "Delete price break" -msgstr "" +msgstr "Staffelpreis löschen" #: templates/js/translated/filters.js:186 #: templates/js/translated/filters.js:672 msgid "true" -msgstr "" +msgstr "wahr" #: templates/js/translated/filters.js:190 #: templates/js/translated/filters.js:673 msgid "false" -msgstr "" +msgstr "falsch" #: templates/js/translated/filters.js:214 msgid "Select filter" -msgstr "" +msgstr "Filter auswählen" #: templates/js/translated/filters.js:437 msgid "Print Labels" -msgstr "" +msgstr "Etiketten drucken" #: templates/js/translated/filters.js:441 msgid "Print Reports" -msgstr "" +msgstr "Berichte drucken" #: templates/js/translated/filters.js:453 msgid "Download table data" -msgstr "" +msgstr "Tabelle herunterladen" #: templates/js/translated/filters.js:460 msgid "Reload table data" -msgstr "" +msgstr "Tabelle neu laden" #: templates/js/translated/filters.js:469 msgid "Add new filter" -msgstr "" +msgstr "Neuen Filter hinzufügen" #: templates/js/translated/filters.js:477 msgid "Clear all filters" -msgstr "" +msgstr "Alle Filter entfernen" #: templates/js/translated/filters.js:582 msgid "Create filter" -msgstr "" +msgstr "Filter erstellen" #: 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 "" +msgstr "Aktion nicht erlaubt" #: templates/js/translated/forms.js:380 msgid "Create operation not allowed" -msgstr "" +msgstr "Erstellen ist nicht erlaubt" #: templates/js/translated/forms.js:395 msgid "Update operation not allowed" -msgstr "" +msgstr "Aktualisieren ist nicht erlaubt" #: templates/js/translated/forms.js:409 msgid "Delete operation not allowed" -msgstr "" +msgstr "Löschvorgang nicht erlaubt" #: templates/js/translated/forms.js:423 msgid "View operation not allowed" -msgstr "" +msgstr "Anzeigevorgang nicht erlaubt" #: templates/js/translated/forms.js:800 msgid "Keep this form open" -msgstr "" +msgstr "Dieses Formular offen lassen" #: templates/js/translated/forms.js:903 msgid "Enter a valid number" -msgstr "" +msgstr "Gib eine gültige Nummer ein" #: templates/js/translated/forms.js:1473 templates/modals.html:19 #: templates/modals.html:43 @@ -11794,91 +11893,91 @@ msgstr "Fehler in Formular" #: templates/js/translated/forms.js:1971 msgid "No results found" -msgstr "" +msgstr "Keine Ergebnisse gefunden" #: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239 msgid "Searching" -msgstr "" +msgstr "Suche" #: templates/js/translated/forms.js:2489 msgid "Clear input" -msgstr "" +msgstr "Eingabe löschen" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "File Column" -msgstr "" +msgstr "Dateispalte" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "Field Name" -msgstr "" +msgstr "Feldname" -#: templates/js/translated/forms.js:3087 +#: templates/js/translated/forms.js:3103 msgid "Select Columns" -msgstr "" +msgstr "Spalten auswählen" #: templates/js/translated/helpers.js:77 msgid "YES" -msgstr "" +msgstr "JA" #: templates/js/translated/helpers.js:80 msgid "NO" -msgstr "" +msgstr "NEIN" #: templates/js/translated/helpers.js:93 msgid "True" -msgstr "" +msgstr "Wahr" #: templates/js/translated/helpers.js:94 msgid "False" -msgstr "" +msgstr "Falsch" #: templates/js/translated/index.js:104 msgid "No parts required for builds" -msgstr "" +msgstr "Keine Ersatzteile für Montage erforderlich" #: templates/js/translated/label.js:53 templates/js/translated/report.js:123 msgid "Select Items" -msgstr "" +msgstr "Elemente auswählen" #: templates/js/translated/label.js:54 msgid "No items selected for printing" -msgstr "" +msgstr "Keine Elemente zum Drucken ausgewählt" #: templates/js/translated/label.js:72 msgid "No Labels Found" -msgstr "" +msgstr "Keine Etiketten gefunden" #: templates/js/translated/label.js:73 msgid "No label templates found which match the selected items" -msgstr "" +msgstr "Keine Berichtvorlagen für ausgewählte Bestellungen gefunden" #: templates/js/translated/label.js:97 msgid "selected" -msgstr "" +msgstr "ausgewählt" #: templates/js/translated/label.js:133 msgid "Printing Options" -msgstr "" +msgstr "Druckoptionen" #: templates/js/translated/label.js:148 msgid "Print label" -msgstr "" +msgstr "Etikett drucken" #: templates/js/translated/label.js:148 msgid "Print labels" -msgstr "" +msgstr "Etiketten drucken" #: templates/js/translated/label.js:149 msgid "Print" -msgstr "" +msgstr "Drucken" #: templates/js/translated/label.js:155 msgid "Select label template" -msgstr "" +msgstr "Etiketten-Vorlage auswählen" #: templates/js/translated/label.js:168 msgid "Select plugin" -msgstr "" +msgstr "Plugin auswählen" #: templates/js/translated/label.js:187 msgid "Labels sent to printer" @@ -11921,27 +12020,27 @@ msgstr "Ungültige Antwort vom Server" #: templates/js/translated/modals.js:1011 msgid "Form data missing from server response" -msgstr "" +msgstr "Formulardaten fehlen bei Serverantwort" #: templates/js/translated/modals.js:1023 msgid "Error posting form data" -msgstr "" +msgstr "Formulardaten fehlerhaft" #: templates/js/translated/modals.js:1120 msgid "JSON response missing form data" -msgstr "" +msgstr "JSON Antwort enthält keine Formulardaten" #: templates/js/translated/modals.js:1135 msgid "Error 400: Bad Request" -msgstr "" +msgstr "Fehler 400: Ungültige Anfrage" #: templates/js/translated/modals.js:1136 msgid "Server returned error code 400" -msgstr "" +msgstr "Fehler 400 von Server erhalten" #: templates/js/translated/modals.js:1159 msgid "Error requesting form data" -msgstr "" +msgstr "Fehler bei Formulardaten-Anfrage" #: templates/js/translated/news.js:33 msgid "No news found" @@ -11979,7 +12078,7 @@ msgstr "Benachrichtigungen erscheinen hier" #: templates/js/translated/order.js:89 msgid "Add Extra Line Item" -msgstr "" +msgstr "Zusätzliche Position hinzufügen" #: templates/js/translated/order.js:126 msgid "Export Order" @@ -11987,92 +12086,92 @@ msgstr "Bestellung exportieren" #: templates/js/translated/order.js:241 msgid "Duplicate Line" -msgstr "" +msgstr "Position duplizieren" #: templates/js/translated/order.js:255 msgid "Edit Line" -msgstr "" +msgstr "Postion bearbeiten" #: templates/js/translated/order.js:268 msgid "Delete Line" -msgstr "" +msgstr "Position löschen" #: templates/js/translated/order.js:281 #: templates/js/translated/purchase_order.js:1991 msgid "No line items found" -msgstr "" +msgstr "Keine Postionen gefunden" #: templates/js/translated/order.js:369 msgid "Duplicate line" -msgstr "" +msgstr "Postionen duplizieren" #: templates/js/translated/order.js:370 msgid "Edit line" -msgstr "" +msgstr "Position bearbeiten" #: templates/js/translated/order.js:374 msgid "Delete line" -msgstr "" +msgstr "Position löschen" #: templates/js/translated/part.js:90 msgid "Part Attributes" -msgstr "" +msgstr "Teileigenschaften" #: templates/js/translated/part.js:94 msgid "Part Creation Options" -msgstr "" +msgstr "Erstellungsoptionen für Teile" #: templates/js/translated/part.js:98 msgid "Part Duplication Options" -msgstr "" +msgstr "Duplizierungsoptionen für Teile" #: templates/js/translated/part.js:121 msgid "Add Part Category" -msgstr "" +msgstr "Teil-Kategorie hinzufügen" #: templates/js/translated/part.js:308 msgid "Parent part category" -msgstr "" +msgstr "Übergeordnete Teilkategorie" #: templates/js/translated/part.js:332 templates/js/translated/stock.js:175 msgid "Icon (optional) - Explore all available icons on" -msgstr "" +msgstr "Icon (optional) - alle verfügbaren Icons einsehbar auf" #: templates/js/translated/part.js:352 msgid "Create Part Category" -msgstr "" +msgstr "Teil-Kategorie hinzufügen" #: templates/js/translated/part.js:355 msgid "Create new category after this one" -msgstr "" +msgstr "Neue Kategorie nach dieser Kategorie erstellen" #: templates/js/translated/part.js:356 msgid "Part category created" -msgstr "" +msgstr "Artikelkategorie erstellt" #: templates/js/translated/part.js:370 msgid "Edit Part Category" -msgstr "" +msgstr "Teilekategorie bearbeiten" #: templates/js/translated/part.js:383 msgid "Are you sure you want to delete this part category?" -msgstr "" +msgstr "Möchten Sie diese Artikel-Kategorie wirklich löschen?" #: templates/js/translated/part.js:388 msgid "Move to parent category" -msgstr "" +msgstr "In übergeordnete Kategorie verschieben" #: templates/js/translated/part.js:397 msgid "Delete Part Category" -msgstr "" +msgstr "Teil-Kategorie löschen" #: templates/js/translated/part.js:401 msgid "Action for parts in this category" -msgstr "" +msgstr "Aktion für Teile in dieser Kategorie" #: templates/js/translated/part.js:406 msgid "Action for child categories" -msgstr "" +msgstr "Aktion für Unterkategorien" #: templates/js/translated/part.js:430 msgid "Create Part" @@ -12120,43 +12219,43 @@ msgstr "" #: templates/js/translated/part.js:550 msgid "All manufacturer and supplier information for this part will be deleted" -msgstr "" +msgstr "Alle Hersteller- und Lieferanteninformationen für dieses Teil werden gelöscht" #: templates/js/translated/part.js:557 msgid "Delete Part" -msgstr "" +msgstr "Teil löschen" #: templates/js/translated/part.js:593 msgid "You are subscribed to notifications for this item" -msgstr "" +msgstr "Du hast Benachrichtigungen zu diesem Artikel abonniert" #: templates/js/translated/part.js:595 msgid "You have subscribed to notifications for this item" -msgstr "" +msgstr "Du hast Benachrichtigungen zu diesem Artikel abonniert" #: templates/js/translated/part.js:600 msgid "Subscribe to notifications for this item" -msgstr "" +msgstr "Benachrichtigungen zu diesem Artikel abonnieren" #: templates/js/translated/part.js:602 msgid "You have unsubscribed to notifications for this item" -msgstr "" +msgstr "Du erhältst keine Benachrichtigungen zu diesem Artikel mehr" #: templates/js/translated/part.js:619 msgid "Validating the BOM will mark each line item as valid" -msgstr "" +msgstr "Die Stückliste zu validieren markiert jede Position als gültig" #: templates/js/translated/part.js:629 msgid "Validate Bill of Materials" -msgstr "" +msgstr "Stückliste prüfen" #: templates/js/translated/part.js:632 msgid "Validated Bill of Materials" -msgstr "" +msgstr "Überprüfte Stückliste" #: templates/js/translated/part.js:657 msgid "Copy Bill of Materials" -msgstr "" +msgstr "Stückliste kopieren" #: templates/js/translated/part.js:685 #: templates/js/translated/table_filters.js:747 @@ -12169,7 +12268,7 @@ msgstr "Kein Lagerbestand verfügbar" #: templates/js/translated/part.js:748 msgid "Demand" -msgstr "" +msgstr "Bedarf" #: templates/js/translated/part.js:771 msgid "Unit" @@ -12181,196 +12280,196 @@ msgstr "Virtuelles Teil" #: templates/js/translated/part.js:806 msgid "Subscribed part" -msgstr "" +msgstr "Abonniertes Teil" #: templates/js/translated/part.js:810 msgid "Salable part" -msgstr "" +msgstr "Verkäufliches Teil" #: templates/js/translated/part.js:889 msgid "Schedule generation of a new stocktake report." -msgstr "" +msgstr "Erstellung eines neuen Inventurberichts planen." #: templates/js/translated/part.js:889 msgid "Once complete, the stocktake report will be available for download." -msgstr "" +msgstr "Nach Fertigstellung steht der Inventurbericht zum Download zur Verfügung." #: templates/js/translated/part.js:897 msgid "Generate Stocktake Report" -msgstr "" +msgstr "Inventurbericht erstellen" #: templates/js/translated/part.js:901 msgid "Stocktake report scheduled" -msgstr "" +msgstr "Inventurbericht geplant" #: templates/js/translated/part.js:1050 msgid "No stocktake information available" -msgstr "" +msgstr "Keine Inventurinformationen verfügbar" #: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 msgid "Edit Stocktake Entry" -msgstr "" +msgstr "Inventureintrag bearbeiten" #: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 msgid "Delete Stocktake Entry" -msgstr "" +msgstr "Inventureintrag löschen" #: templates/js/translated/part.js:1281 msgid "No variants found" -msgstr "" +msgstr "Keine Varianten gefunden" #: templates/js/translated/part.js:1599 msgid "No part parameter templates found" -msgstr "" +msgstr "Keine Teileparametervorlagen gefunden" #: templates/js/translated/part.js:1662 msgid "Edit Part Parameter Template" -msgstr "" +msgstr "Teileparametervorlage bearbeiten" #: templates/js/translated/part.js:1674 msgid "Any parameters which reference this template will also be deleted" -msgstr "" +msgstr "Alle Parameter mit Verweis auf diese Vorlage werden ebenfalls gelöscht" #: templates/js/translated/part.js:1682 msgid "Delete Part Parameter Template" -msgstr "" +msgstr "Teileparametervorlage löschen" #: templates/js/translated/part.js:1716 #: templates/js/translated/purchase_order.js:1655 msgid "No purchase orders found" -msgstr "" +msgstr "Keine Bestellungen gefunden" #: templates/js/translated/part.js:1860 #: templates/js/translated/purchase_order.js:2154 #: templates/js/translated/return_order.js:756 #: templates/js/translated/sales_order.js:1875 msgid "This line item is overdue" -msgstr "" +msgstr "Diese Position ist überfällig" #: templates/js/translated/part.js:1906 #: templates/js/translated/purchase_order.js:2221 msgid "Receive line item" -msgstr "" +msgstr "Position empfangen" #: templates/js/translated/part.js:1969 msgid "Delete part relationship" -msgstr "" +msgstr "Teilebeziehung löschen" #: templates/js/translated/part.js:1991 msgid "Delete Part Relationship" -msgstr "" +msgstr "Teilebeziehung löschen" #: templates/js/translated/part.js:2079 templates/js/translated/part.js:2506 msgid "No parts found" -msgstr "" +msgstr "Keine Teile gefunden" #: templates/js/translated/part.js:2200 msgid "Set the part category for the selected parts" -msgstr "" +msgstr "Wähle die Kategorie für die ausgewählten Teile" #: templates/js/translated/part.js:2205 msgid "Set Part Category" -msgstr "" +msgstr "Teilekategorie auswählen" #: templates/js/translated/part.js:2235 msgid "Set category" -msgstr "" +msgstr "Kategorie wählen" #: templates/js/translated/part.js:2287 msgid "part" -msgstr "" +msgstr "Teil" #: templates/js/translated/part.js:2288 msgid "parts" -msgstr "" +msgstr "Teile" #: templates/js/translated/part.js:2384 msgid "No category" -msgstr "" +msgstr "Keine Kategorien" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 -#: templates/js/translated/stock.js:2633 +#: templates/js/translated/stock.js:2669 msgid "Display as list" -msgstr "" +msgstr "Als Liste anzeigen" #: templates/js/translated/part.js:2547 msgid "Display as grid" -msgstr "" +msgstr "Als Raster anzeigen" #: templates/js/translated/part.js:2645 msgid "No subcategories found" -msgstr "" +msgstr "Keine Unterkategorien gefunden" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" -msgstr "" +msgstr "Als Baum anzeigen" #: templates/js/translated/part.js:2761 msgid "Load Subcategories" -msgstr "" +msgstr "Unterkategorien laden" #: templates/js/translated/part.js:2777 msgid "Subscribed category" -msgstr "" +msgstr "Abonnierte Kategorie" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" -msgstr "" +msgstr "Keine passenden Testvorlagen gefunden" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" -msgstr "" +msgstr "Ergebnisse" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 msgid "Edit test result" -msgstr "" +msgstr "Testergebnis bearbeiten" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 msgid "Delete test result" -msgstr "" +msgstr "Testergebnis löschen" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" -msgstr "" +msgstr "Dieser Test ist für ein übergeordnetes Teil definiert" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" -msgstr "" +msgstr "Vorlage für Testergebnis bearbeiten" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" -msgstr "" +msgstr "Vorlage für Testergebnis löschen" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" -msgstr "" +msgstr "Kein Datum angegeben" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" -msgstr "" +msgstr "Das angegebene Datum liegt in der Vergangenheit" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" -msgstr "" +msgstr "Spekulativ" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" -msgstr "" +msgstr "Maximale Menge" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" @@ -12468,19 +12567,19 @@ msgstr "" #: templates/js/translated/purchase_order.js:176 msgid "Duplicate Line Items" -msgstr "" +msgstr "Positionen duplizieren" #: templates/js/translated/purchase_order.js:177 msgid "Duplicate all line items from the selected order" -msgstr "" +msgstr "Alle Positionen der ausgewählten Bestellung duplizieren" #: templates/js/translated/purchase_order.js:184 msgid "Duplicate Extra Lines" -msgstr "" +msgstr "Zusätzliche Positionen duplizieren" #: templates/js/translated/purchase_order.js:185 msgid "Duplicate extra line items from the selected order" -msgstr "" +msgstr "Zusätzliche Positionen der ausgewählten Bestellung duplizieren" #: templates/js/translated/purchase_order.js:206 msgid "Edit Purchase Order" @@ -12502,16 +12601,16 @@ msgstr "" #: templates/js/translated/purchase_order.js:454 msgid "All line items have been received" -msgstr "" +msgstr "Alle Positionen wurden erhalten" #: templates/js/translated/purchase_order.js:459 msgid "This order has line items which have not been marked as received." -msgstr "" +msgstr "Diese Bestellung enthält Positionen, die nicht als empfangen markiert wurden." #: templates/js/translated/purchase_order.js:460 #: templates/js/translated/sales_order.js:514 msgid "Completing this order means that the order and line items will no longer be editable." -msgstr "" +msgstr "Fertigstellen dieser Bestellung bedeutet, dass sie ihre Positionen nicht länger bearbeiten können." #: templates/js/translated/purchase_order.js:483 msgid "Cancel Purchase Order" @@ -12528,7 +12627,7 @@ 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 "" +msgstr "Nachdem diese Bestellung platziert ist, können die Positionen nicht länger bearbeitet werden." #: templates/js/translated/purchase_order.js:520 msgid "Issue Purchase Order" @@ -12540,7 +12639,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:637 msgid "Quantity to order" -msgstr "" +msgstr "Zu bestellende Menge" #: templates/js/translated/purchase_order.js:646 msgid "New supplier part" @@ -12556,7 +12655,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:755 msgid "Merge" -msgstr "" +msgstr "Zusammenfügen" #: templates/js/translated/purchase_order.js:859 msgid "No matching supplier parts" @@ -12568,20 +12667,20 @@ msgstr "" #: templates/js/translated/purchase_order.js:1073 msgid "Select Line Items" -msgstr "" +msgstr "Positionen auswählen" #: templates/js/translated/purchase_order.js:1074 #: templates/js/translated/return_order.js:492 msgid "At least one line item must be selected" -msgstr "" +msgstr "Mindestens eine Position muss ausgewählt werden" #: templates/js/translated/purchase_order.js:1104 msgid "Received Quantity" -msgstr "" +msgstr "Erhaltene Menge" #: templates/js/translated/purchase_order.js:1115 msgid "Quantity to receive" -msgstr "" +msgstr "Zu erhaltende Menge" #: templates/js/translated/purchase_order.js:1191 msgid "Stock Status" @@ -12617,35 +12716,35 @@ msgstr "" #: templates/js/translated/purchase_order.js:1307 msgid "Quantity to Receive" -msgstr "" +msgstr "Zu erhaltende Menge" #: templates/js/translated/purchase_order.js:1333 #: templates/js/translated/return_order.js:561 msgid "Confirm receipt of items" -msgstr "" +msgstr "Empfang der Artikel bestätigen" #: templates/js/translated/purchase_order.js:1334 msgid "Receive Purchase Order Items" -msgstr "" +msgstr "Bestellartikel erhalten" #: templates/js/translated/purchase_order.js:1402 msgid "Scan Item Barcode" -msgstr "" +msgstr "Artikel-Barcode scannen" #: templates/js/translated/purchase_order.js:1403 msgid "Scan barcode on incoming item (must not match any existing stock items)" -msgstr "" +msgstr "Scanne den Barcode am erhaltenen Artikel (darf nicht mit einem existierenden Lagerartikel übereinstimmen)" #: templates/js/translated/purchase_order.js:1417 msgid "Invalid barcode data" -msgstr "" +msgstr "Ungültige Barcode-Daten" #: templates/js/translated/purchase_order.js:1682 #: templates/js/translated/return_order.js:286 #: templates/js/translated/sales_order.js:774 #: templates/js/translated/sales_order.js:998 msgid "Order is overdue" -msgstr "" +msgstr "Bestellung ist überfällig" #: templates/js/translated/purchase_order.js:1748 #: templates/js/translated/return_order.js:354 @@ -12656,46 +12755,46 @@ msgstr "" #: templates/js/translated/purchase_order.js:1844 msgid "All selected Line items will be deleted" -msgstr "" +msgstr "Alle ausgewählten Positionen werden gelöscht" #: templates/js/translated/purchase_order.js:1862 msgid "Delete selected Line items?" -msgstr "" +msgstr "Ausgewählte Positionen löschen?" #: templates/js/translated/purchase_order.js:1917 #: templates/js/translated/sales_order.js:2070 msgid "Duplicate Line Item" -msgstr "" +msgstr "Position duplizieren" #: templates/js/translated/purchase_order.js:1932 #: templates/js/translated/return_order.js:476 #: templates/js/translated/return_order.js:669 #: templates/js/translated/sales_order.js:2083 msgid "Edit Line Item" -msgstr "" +msgstr "Position bearbeiten" #: templates/js/translated/purchase_order.js:1943 #: templates/js/translated/return_order.js:682 #: templates/js/translated/sales_order.js:2094 msgid "Delete Line Item" -msgstr "" +msgstr "Position löschen" #: templates/js/translated/purchase_order.js:2225 #: templates/js/translated/sales_order.js:2024 msgid "Duplicate line item" -msgstr "" +msgstr "Position duplizieren" #: templates/js/translated/purchase_order.js:2226 #: templates/js/translated/return_order.js:801 #: templates/js/translated/sales_order.js:2025 msgid "Edit line item" -msgstr "" +msgstr "Position bearbeiten" #: templates/js/translated/purchase_order.js:2227 #: templates/js/translated/return_order.js:805 #: templates/js/translated/sales_order.js:2031 msgid "Delete line item" -msgstr "" +msgstr "Position löschen" #: templates/js/translated/report.js:63 msgid "items selected" @@ -12762,7 +12861,7 @@ msgstr "" #: templates/js/translated/return_order.js:693 #: templates/js/translated/sales_order.js:2231 msgid "No matching line items" -msgstr "" +msgstr "Keine passenden Positionen gefunden" #: templates/js/translated/return_order.js:798 msgid "Mark item as received" @@ -12770,11 +12869,11 @@ msgstr "" #: templates/js/translated/sales_order.js:161 msgid "Create Sales Order" -msgstr "" +msgstr "Auftrag anlegen" #: templates/js/translated/sales_order.js:176 msgid "Edit Sales Order" -msgstr "" +msgstr "Auftrag bearbeiten" #: templates/js/translated/sales_order.js:291 msgid "No stock items have been allocated to this shipment" @@ -12810,19 +12909,19 @@ msgstr "" #: templates/js/translated/sales_order.js:513 msgid "This order has line items which have not been completed." -msgstr "" +msgstr "Dieser Auftrag enthält Positionen, die noch nicht abgeschlossen sind." #: templates/js/translated/sales_order.js:535 msgid "Issue this Sales Order?" -msgstr "" +msgstr "Diesen Auftrag aufgeben?" #: templates/js/translated/sales_order.js:540 msgid "Issue Sales Order" -msgstr "" +msgstr "Auftrag aufgeben" #: templates/js/translated/sales_order.js:559 msgid "Cancel Sales Order" -msgstr "" +msgstr "Auftrag stornieren" #: templates/js/translated/sales_order.js:564 msgid "Cancelling this order means that the order will no longer be editable." @@ -12834,7 +12933,7 @@ msgstr "" #: templates/js/translated/sales_order.js:728 msgid "No sales orders found" -msgstr "" +msgstr "Keine Aufträge gefunden" #: templates/js/translated/sales_order.js:908 msgid "Edit shipment" @@ -12887,11 +12986,11 @@ msgstr "" #: templates/js/translated/sales_order.js:1271 msgid "Allocate Stock Items to Sales Order" -msgstr "" +msgstr "Lagerartikel Auftrag zuweisen" #: templates/js/translated/sales_order.js:1477 msgid "No sales order allocations found" -msgstr "" +msgstr "Keine Allokationen für Auftrag gefunden" #: templates/js/translated/sales_order.js:1569 msgid "Edit Stock Allocation" @@ -12907,7 +13006,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1737 +#: templates/js/translated/stock.js:1773 msgid "Shipped to customer" msgstr "" @@ -13165,7 +13264,7 @@ msgstr "" msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" @@ -13189,248 +13288,256 @@ msgstr "" msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1440 +#: templates/js/translated/stock.js:1447 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1443 +#: templates/js/translated/stock.js:1450 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1466 +#: templates/js/translated/stock.js:1473 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1530 +#: templates/js/translated/stock.js:1537 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1677 +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1733 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1729 +#: templates/js/translated/stock.js:1765 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1769 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1741 +#: templates/js/translated/stock.js:1777 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1747 +#: templates/js/translated/stock.js:1783 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1839 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1848 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:1897 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1916 +#: templates/js/translated/stock.js:1952 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1921 +#: templates/js/translated/stock.js:1957 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1932 +#: templates/js/translated/stock.js:1968 msgid "Stock Actions" -msgstr "" +msgstr "Lager-Aktionen" -#: templates/js/translated/stock.js:1976 +#: templates/js/translated/stock.js:2012 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2054 +#: templates/js/translated/stock.js:2090 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2059 +#: templates/js/translated/stock.js:2095 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2062 +#: templates/js/translated/stock.js:2098 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2065 +#: templates/js/translated/stock.js:2101 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2067 +#: templates/js/translated/stock.js:2103 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2069 +#: templates/js/translated/stock.js:2105 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2072 +#: templates/js/translated/stock.js:2108 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2074 +#: templates/js/translated/stock.js:2110 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2114 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2080 +#: templates/js/translated/stock.js:2116 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2085 +#: templates/js/translated/stock.js:2121 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2087 +#: templates/js/translated/stock.js:2123 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2089 +#: templates/js/translated/stock.js:2125 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2129 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2258 +#: templates/js/translated/stock.js:2294 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2305 +#: templates/js/translated/stock.js:2341 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2433 +#: templates/js/translated/stock.js:2469 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2573 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2692 +#: templates/js/translated/stock.js:2728 msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2810 +#: templates/js/translated/stock.js:2846 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2814 +#: templates/js/translated/stock.js:2850 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:2862 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2848 +#: templates/js/translated/stock.js:2884 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2865 +#: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2880 +#: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2897 +#: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2914 +#: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3005 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2977 +#: templates/js/translated/stock.js:3013 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:3049 +#: templates/js/translated/stock.js:3085 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139 +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:3161 +#: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:3182 +#: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:3183 +#: 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:3185 +#: 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:3186 +#: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:3187 +#: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:3188 +#: 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:3201 +#: templates/js/translated/stock.js:3237 msgid "Select part to install" msgstr "" -#: templates/js/translated/stock.js:3264 +#: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" msgstr "" -#: templates/js/translated/stock.js:3277 +#: templates/js/translated/stock.js:3313 msgid "Selected stock items" msgstr "" -#: templates/js/translated/stock.js:3281 +#: templates/js/translated/stock.js:3317 msgid "Change Stock Status" msgstr "" @@ -13461,7 +13568,7 @@ msgstr "" #: templates/js/translated/table_filters.js:158 msgid "Trackable Part" -msgstr "" +msgstr "Nachverfolgbares Teil" #: templates/js/translated/table_filters.js:162 msgid "Assembled Part" @@ -13473,7 +13580,7 @@ msgstr "" #: templates/js/translated/table_filters.js:182 msgid "Allow Variant Stock" -msgstr "" +msgstr "Erlaube alternatives Lager" #: templates/js/translated/table_filters.js:194 #: templates/js/translated/table_filters.js:779 @@ -13588,7 +13695,7 @@ msgstr "" #: templates/js/translated/table_filters.js:366 msgid "Include stock items for variant parts" -msgstr "" +msgstr "Lagerartikel für Teile-Varianten einschließen" #: templates/js/translated/table_filters.js:371 msgid "Show stock items which are installed in another item" diff --git a/InvenTree/locale/el/LC_MESSAGES/django.po b/InvenTree/locale/el/LC_MESSAGES/django.po index 5afc1fc072..6aa9caee61 100644 --- a/InvenTree/locale/el/LC_MESSAGES/django.po +++ b/InvenTree/locale/el/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 04:05+0000\n" -"PO-Revision-Date: 2024-02-28 07:23\n" +"POT-Creation-Date: 2024-03-19 01:26+0000\n" +"PO-Revision-Date: 2024-03-19 11:51\n" "Last-Translator: \n" "Language-Team: Greek\n" "Language: el_GR\n" @@ -28,22 +28,22 @@ msgstr "Δεν έχετε δικαιώματα να το δείτε αυτό" #: InvenTree/conversion.py:160 #, python-brace-format msgid "Invalid unit provided ({unit})" -msgstr "" +msgstr "Η μονάδα μέτρησης δεν είναι έγκυρη ({unit})" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "Δεν εισήχθη τιμή" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "Δεν ήταν δυνατή η μετατροπή από {original} σε {unit}" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" msgstr "Δόθηκε μη έγκυρη ποσότητα" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" msgstr "Δόθηκε μη έγκυρη ποσότητα ({exc})" @@ -64,18 +64,18 @@ msgstr "Εισάγετε ημερομηνία" #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 #: templates/js/translated/return_order.js:776 #: templates/js/translated/sales_order.js:1067 #: templates/js/translated/sales_order.js:1982 -#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 msgid "Notes" msgstr "Σημειώσεις" @@ -132,42 +132,42 @@ msgstr "Ο παρεχόμενος τομέας ηλεκτρονικού ταχυ msgid "Registration is disabled." msgstr "Η εγγραφή είναι απενεργοποιημένη." -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "Μη έγκυρη ποσότητα" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "Κενό σειριακό αριθμό συμβολοσειράς" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "Διπλότυπο serial number" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "Μη έγκυρο εύρος ομάδας: {group}" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "Το εύρος της ομάδας {group} υπερβαίνει την επιτρεπόμενη ποσότητα ({expected_quantity})" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "Μη έγκυρη ακολουθία ομάδας: {group}" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "Δεν βρέθηκαν σειριακοί αριθμοί" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "Ο αριθμός μοναδικών σειριακών αριθμών ({len(serials)}) πρέπει να αντιστοιχεί στην ποσότητα ({expected_quantity})" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "Αφαιρέστε τα HTML tags από την τιμή που εισάγατε" @@ -203,138 +203,142 @@ msgstr "Ο διακομιστής επέστρεψε σφάλμα %1$d %2$s" msgid "Supplied URL is not a valid image file" msgstr "Το URL δεν είναι έγκυρο αρχείο εικόνας" -#: InvenTree/locales.py:16 +#: InvenTree/locales.py:18 msgid "Bulgarian" msgstr "Βουλγάρικα" -#: InvenTree/locales.py:17 +#: InvenTree/locales.py:19 msgid "Czech" msgstr "Τσέχικα" -#: InvenTree/locales.py:18 +#: InvenTree/locales.py:20 msgid "Danish" -msgstr "" +msgstr "Δανέζικα" -#: InvenTree/locales.py:19 +#: InvenTree/locales.py:21 msgid "German" msgstr "Γερμανικά" -#: InvenTree/locales.py:20 +#: InvenTree/locales.py:22 msgid "Greek" msgstr "Ελληνικά" -#: InvenTree/locales.py:21 +#: InvenTree/locales.py:23 msgid "English" msgstr "Αγγλικά" -#: InvenTree/locales.py:22 +#: InvenTree/locales.py:24 msgid "Spanish" msgstr "Ισπανικά" -#: InvenTree/locales.py:23 +#: InvenTree/locales.py:25 msgid "Spanish (Mexican)" msgstr "Ισπανικά (Μεξικό)" -#: InvenTree/locales.py:24 +#: InvenTree/locales.py:26 msgid "Farsi / Persian" msgstr "Φαρσί / Περσικά" -#: InvenTree/locales.py:25 +#: InvenTree/locales.py:27 msgid "Finnish" msgstr "Φινλανδικά" -#: InvenTree/locales.py:26 +#: InvenTree/locales.py:28 msgid "French" msgstr "Γαλλικά" -#: InvenTree/locales.py:27 +#: InvenTree/locales.py:29 msgid "Hebrew" msgstr "Εβραϊκά" -#: InvenTree/locales.py:28 +#: InvenTree/locales.py:30 msgid "Hindi" msgstr "Ινδικά" -#: InvenTree/locales.py:29 +#: InvenTree/locales.py:31 msgid "Hungarian" msgstr "Ούγγρικα" -#: InvenTree/locales.py:30 +#: InvenTree/locales.py:32 msgid "Italian" msgstr "Ιταλικά" -#: InvenTree/locales.py:31 +#: InvenTree/locales.py:33 msgid "Japanese" msgstr "Ιαπωνικά" -#: InvenTree/locales.py:32 +#: InvenTree/locales.py:34 msgid "Korean" msgstr "Κορεάτικα" -#: InvenTree/locales.py:33 +#: InvenTree/locales.py:35 +msgid "Latvian" +msgstr "" + +#: InvenTree/locales.py:36 msgid "Dutch" msgstr "Dutch" -#: InvenTree/locales.py:34 +#: InvenTree/locales.py:37 msgid "Norwegian" msgstr "Νορβηγικά" -#: InvenTree/locales.py:35 +#: InvenTree/locales.py:38 msgid "Polish" msgstr "Πολωνικά" -#: InvenTree/locales.py:36 +#: InvenTree/locales.py:39 msgid "Portuguese" msgstr "Πορτογαλικά" -#: InvenTree/locales.py:37 +#: InvenTree/locales.py:40 msgid "Portuguese (Brazilian)" msgstr "Πορτογαλικά (Βραζιλίας)" -#: InvenTree/locales.py:38 +#: InvenTree/locales.py:41 msgid "Russian" msgstr "Ρωσικά" -#: InvenTree/locales.py:39 -msgid "Slovak" -msgstr "" - -#: InvenTree/locales.py:40 -msgid "Slovenian" -msgstr "" - -#: InvenTree/locales.py:41 -msgid "Serbian" -msgstr "" - #: InvenTree/locales.py:42 +msgid "Slovak" +msgstr "Σλοβάκικα" + +#: InvenTree/locales.py:43 +msgid "Slovenian" +msgstr "Σλοβενικά" + +#: InvenTree/locales.py:44 +msgid "Serbian" +msgstr "Σερβικά" + +#: InvenTree/locales.py:45 msgid "Swedish" msgstr "Σουηδικά" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:46 msgid "Thai" msgstr "Ταϊλανδέζικα" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:47 msgid "Turkish" msgstr "Τούρκικα" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:48 msgid "Vietnamese" msgstr "Βιετναμέζικα" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:49 msgid "Chinese (Simplified)" msgstr "Κινέζικα (απλοποιημένα)" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:50 msgid "Chinese (Traditional)" msgstr "Κινέζικα (Παραδοσιακά)" #: InvenTree/magic_login.py:28 #, python-brace-format msgid "[{site_name}] Log in to the app" -msgstr "" +msgstr "[{site_name}] Σύνδεση στην εφαρμογή" #: InvenTree/magic_login.py:38 company/models.py:132 #: company/templates/company/company_base.html:132 @@ -345,7 +349,7 @@ msgstr "Email" #: InvenTree/models.py:107 msgid "Error running plugin validation" -msgstr "" +msgstr "Σφάλμα κατά την εκτέλεση επικύρωσης προσθέτου" #: InvenTree/models.py:162 msgid "Metadata must be a python dict object" @@ -391,7 +395,7 @@ msgstr "Το αρχείο λείπει" msgid "Missing external link" msgstr "Λείπει ο εξωτερικός σύνδεσμος" -#: InvenTree/models.py:559 stock/models.py:2446 +#: InvenTree/models.py:559 stock/models.py:2449 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -401,7 +405,7 @@ msgstr "Συνημμένο" msgid "Select file to attach" msgstr "Επιλέξτε αρχείο για επισύναψη" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -432,13 +436,13 @@ msgstr "Σχόλιο" msgid "File comment" msgstr "Σχόλιο αρχείου" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:3000 users/models.py:100 +#: templates/js/translated/stock.js:3036 users/models.py:100 msgid "User" msgstr "Χρήστης" @@ -479,10 +483,10 @@ msgstr "Διπλότυπα ονόματα δεν μπορούν να υπάρχ msgid "Invalid choice" msgstr "Μη έγκυρη επιλογή" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -495,7 +499,7 @@ msgstr "Μη έγκυρη επιλογή" #: templates/js/translated/company.js:1155 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Όνομα" @@ -506,10 +510,10 @@ msgstr "Όνομα" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -523,7 +527,7 @@ msgstr "Όνομα" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -531,8 +535,8 @@ msgstr "Όνομα" #: templates/js/translated/return_order.js:314 #: templates/js/translated/sales_order.js:802 #: templates/js/translated/sales_order.js:1812 -#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021 -#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "Περιγραφή" @@ -545,7 +549,7 @@ msgid "parent" msgstr "γονέας" #: InvenTree/models.py:916 templates/js/translated/part.js:2794 -#: templates/js/translated/stock.js:2721 +#: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Μονοπάτι" @@ -581,7 +585,7 @@ msgstr "Σφάλμα διακομιστή" msgid "An error has been logged by the server." msgstr "Ένα σφάλμα έχει καταγραφεί από το διακομιστή." -#: InvenTree/serializers.py:62 part/models.py:4134 +#: InvenTree/serializers.py:62 part/models.py:4143 msgid "Must be a valid number" msgstr "Πρέπει να είναι αριθμός" @@ -596,89 +600,89 @@ msgstr "Νόμισμα" msgid "Select currency from available options" msgstr "Επιλέξτε νόμισμα από τις διαθέσιμες επιλογές" -#: InvenTree/serializers.py:436 +#: InvenTree/serializers.py:441 msgid "You do not have permission to change this user role." -msgstr "" +msgstr "Δεν έχετε άδεια να αλλάξετε αυτόν τον ρόλο χρήστη." -#: InvenTree/serializers.py:448 +#: InvenTree/serializers.py:453 msgid "Only superusers can create new users" -msgstr "" +msgstr "Μόνο υπερχρήστες (superusers) μπορούν να δημιουργήσουν νέους χρήστες" -#: InvenTree/serializers.py:467 +#: InvenTree/serializers.py:472 msgid "Your account has been created." -msgstr "" +msgstr "Ο λογαριασμός σας δημιουργήθηκε." -#: InvenTree/serializers.py:469 +#: InvenTree/serializers.py:474 msgid "Please use the password reset function to login" -msgstr "" +msgstr "Παρακαλούμε χρησιμοποιήστε τη λειτουργία επαναφοράς κωδικού πρόσβασης για να συνδεθείτε" -#: InvenTree/serializers.py:476 +#: InvenTree/serializers.py:481 msgid "Welcome to InvenTree" -msgstr "" +msgstr "Καλώς ήρθατε στο InvenTree" -#: InvenTree/serializers.py:537 +#: InvenTree/serializers.py:542 msgid "Filename" msgstr "Όνομα αρχείου" -#: InvenTree/serializers.py:571 +#: InvenTree/serializers.py:576 msgid "Invalid value" msgstr "Μη έγκυρη τιμή" -#: InvenTree/serializers.py:591 +#: InvenTree/serializers.py:596 msgid "Data File" msgstr "Αρχείο Δεδομένων" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:597 msgid "Select data file for upload" msgstr "Επιλέξτε ένα αρχείο για ανέβασμα" -#: InvenTree/serializers.py:609 +#: InvenTree/serializers.py:614 msgid "Unsupported file type" msgstr "Μη υποστηριζόμενος τύπος αρχείου" -#: InvenTree/serializers.py:615 +#: InvenTree/serializers.py:620 msgid "File is too large" msgstr "Το αρχείο είναι πολύ μεγάλο" -#: InvenTree/serializers.py:636 +#: InvenTree/serializers.py:641 msgid "No columns found in file" msgstr "Δεν βρέθηκαν στήλες στο αρχείο" -#: InvenTree/serializers.py:639 +#: InvenTree/serializers.py:644 msgid "No data rows found in file" msgstr "Δεν βρέθηκαν γραμμές δεδομένων στο αρχείο" -#: InvenTree/serializers.py:752 +#: InvenTree/serializers.py:757 msgid "No data rows provided" msgstr "Δεν παρασχέθηκαν σειρές δεδομένων" -#: InvenTree/serializers.py:755 +#: InvenTree/serializers.py:760 msgid "No data columns supplied" msgstr "Δεν δόθηκαν στήλες δεδομένων" -#: InvenTree/serializers.py:822 +#: InvenTree/serializers.py:827 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Λείπει απαιτούμενη στήλη: '{name}'" -#: InvenTree/serializers.py:831 +#: InvenTree/serializers.py:836 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Διπλή στήλη: '{col}'" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:859 msgid "Remote Image" -msgstr "" +msgstr "Απομακρυσμένες Εικόνες" -#: InvenTree/serializers.py:855 +#: InvenTree/serializers.py:860 msgid "URL of remote image file" msgstr "Διεύθυνση URL του αρχείου απομακρυσμένης εικόνας" -#: InvenTree/serializers.py:873 +#: InvenTree/serializers.py:878 msgid "Downloading images from remote URL is not enabled" msgstr "Η λήψη εικόνων από απομακρυσμένο URL δεν είναι ενεργοποιημένη" -#: InvenTree/status.py:66 part/serializers.py:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "Ο έλεγχος εργασίας στο παρασκήνιο απέτυχε" @@ -818,7 +822,7 @@ msgstr "Έγινε διαχωρισμός από το γονεϊκό αρχεί msgid "Split child item" msgstr "Διαχωρίστηκε θυγατρικό στοιχείο" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 msgid "Merged stock items" msgstr "Έγινε συγχώνευση αποθεμάτων" @@ -836,23 +840,23 @@ msgstr "Η έξοδος της σειράς κατασκευής ολοκληρ #: InvenTree/status_codes.py:128 msgid "Build order output rejected" -msgstr "" +msgstr "Η εντολή κατασκευής απορρίφθηκε" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 msgid "Consumed by build order" msgstr "Κατανάλωση με εντολή κατασκευής" #: InvenTree/status_codes.py:132 msgid "Shipped against Sales Order" -msgstr "" +msgstr "Αποστολή έναντι Εντολής Πώλησης" #: InvenTree/status_codes.py:135 msgid "Received against Purchase Order" -msgstr "" +msgstr "Λήφθηκε έναντι Εντολής Αγοράς" #: InvenTree/status_codes.py:138 msgid "Returned against Return Order" -msgstr "" +msgstr "Επιστράφηκε έναντι Εντολής Αγοράς" #: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" @@ -868,31 +872,31 @@ msgstr "Παραγωγή" #: InvenTree/status_codes.py:185 msgid "Return" -msgstr "" +msgstr "Επιστροφή" #: InvenTree/status_codes.py:188 msgid "Repair" -msgstr "" +msgstr "Επισκευή" #: InvenTree/status_codes.py:191 msgid "Replace" -msgstr "" +msgstr "Αντικατάσταση" #: InvenTree/status_codes.py:194 msgid "Refund" -msgstr "" +msgstr "Επιστροφή χρημάτων" #: InvenTree/status_codes.py:197 msgid "Reject" -msgstr "" +msgstr "Απόρριψη" #: InvenTree/templatetags/inventree_extras.py:183 msgid "Unknown database" -msgstr "" +msgstr "Άγνωστη βάση δεδομένων" #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" -msgstr "" +msgstr "Μη έγκυρη φυσική μονάδα" #: InvenTree/validators.py:39 msgid "Not a valid currency code" @@ -938,33 +942,33 @@ msgstr "Σχετικά με το InvenTree" msgid "Build must be cancelled before it can be deleted" msgstr "Η έκδοση πρέπει να ακυρωθεί πριν διαγραφεί" -#: build/api.py:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" -msgstr "" +msgstr "Αναλώσιμο" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 #: templates/js/translated/table_filters.js:215 #: templates/js/translated/table_filters.js:587 msgid "Optional" -msgstr "" +msgstr "Προαιρετικό" #: build/api.py:283 templates/js/translated/table_filters.js:408 #: templates/js/translated/table_filters.js:579 msgid "Tracked" -msgstr "" +msgstr "Υπό παρακολούθηση" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" -msgstr "" +msgstr "Κατανεμημένο" #: build/api.py:293 company/models.py:890 #: company/templates/company/supplier_part.html:114 @@ -978,14 +982,14 @@ msgstr "" #: templates/js/translated/table_filters.js:340 #: templates/js/translated/table_filters.js:575 msgid "Available" -msgstr "" +msgstr "Διαθέσιμο" #: build/models.py:74 build/templates/build/build_base.html:9 #: build/templates/build/build_base.html:27 #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "Σειρά Κατασκευής" @@ -1006,7 +1010,7 @@ msgstr "Μη έγκυρη επιλογή για γονική κατασκευή" #: build/models.py:127 msgid "Build order part cannot be changed" -msgstr "" +msgstr "Εξάρτημα από εντολή κατασκευής δεν μπορεί να αλλάξει" #: build/models.py:173 msgid "Build Order Reference" @@ -1014,7 +1018,7 @@ msgstr "Αναφορά Παραγγελίας Κατασκευής" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1030,7 +1034,7 @@ msgstr "Αναφορά" #: build/models.py:185 msgid "Brief description of the build (optional)" -msgstr "" +msgstr "Σύντομη περιγραφή της κατασκευής (προαιρετικό)" #: build/models.py:193 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 @@ -1044,11 +1048,11 @@ msgstr "BuildOrder στην οποία έχει δοθεί αυτή η κατα #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1059,7 +1063,7 @@ msgstr "BuildOrder στην οποία έχει δοθεί αυτή η κατα #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:267 stock/serializers.py:689 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1086,9 +1090,9 @@ msgstr "BuildOrder στην οποία έχει δοθεί αυτή η κατα #: templates/js/translated/sales_order.js:1598 #: templates/js/translated/sales_order.js:1796 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960 -#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054 -#: templates/js/translated/stock.js:3200 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 msgid "Part" msgstr "Εξάρτημα" @@ -1146,8 +1150,8 @@ msgstr "Κατάσταση Κατασκευής" msgid "Build status code" msgstr "Κωδικός κατάστασης κατασκευής" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Κωδικός Παρτίδας" @@ -1205,7 +1209,7 @@ msgstr "Υπεύθυνος" #: build/models.py:303 msgid "User or group responsible for this build order" -msgstr "" +msgstr "Χρήστης ή ομάδα υπεύθυνη για αυτή την εντολή κατασκευής" #: build/models.py:308 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 @@ -1221,11 +1225,11 @@ msgstr "Εξωτερικοί σύνδεσμοι" #: build/models.py:313 msgid "Build Priority" -msgstr "" +msgstr "Προτεραιότητα Κατασκευής" #: build/models.py:316 msgid "Priority of this build order" -msgstr "" +msgstr "Προτεραιότητα αυτής της εντολής κατασκευής" #: build/models.py:323 common/models.py:129 order/admin.py:18 #: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146 @@ -1236,59 +1240,59 @@ msgstr "" #: templates/js/translated/table_filters.js:48 #: templates/project_code_data.html:6 msgid "Project Code" -msgstr "" +msgstr "Κωδικός Έργου" #: build/models.py:324 msgid "Project code for this build order" -msgstr "" +msgstr "Κωδικός έργου για αυτήν την εντολή κατασκευής" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Η παραγγελία κατασκευής {build} έχει ολοκληρωθεί" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "Η παραγγελία κατασκευής έχει ολοκληρωθεί" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "Δεν καθορίστηκε έξοδος κατασκευής" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "Η παραγγελία κατασκευής έχει ολοκληρωθεί" -#: build/models.py:789 +#: build/models.py:805 msgid "Build output does not match Build Order" msgstr "Η έξοδος κατασκευής δεν ταιριάζει με την παραγγελία κατασκευής" -#: build/models.py:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 msgid "Quantity must be greater than zero" msgstr "Η ποσότητα πρέπει να είναι μεγαλύτερη από 0" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 msgid "Quantity cannot be greater than the output quantity" -msgstr "" +msgstr "Η ποσότητα δεν μπορεί να είναι μεγαλύτερη από την παραγόμενη ποσότητα" -#: build/models.py:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" -msgstr "" +msgstr "Το προϊόν κατασκευής {serial} δεν έχει περάσει όλες τις απαιτούμενες δοκιμές" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" -msgstr "" +msgstr "Αντικείμενο κατασκευής" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1298,7 +1302,7 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:463 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1310,7 +1314,7 @@ msgstr "" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1325,43 +1329,43 @@ msgstr "" #: templates/js/translated/sales_order.js:1698 #: templates/js/translated/sales_order.js:1824 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 -#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985 -#: templates/js/translated/stock.js:3068 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "Ποσότητα" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" -msgstr "" +msgstr "Απαιτούμενη ποσότητα για την εντολή κατασκευής" -#: build/models.py:1381 +#: build/models.py:1397 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "Το στοιχείο κατασκευής πρέπει να ορίζει μια έξοδο κατασκευής, καθώς το κύριο τμήμα επισημαίνεται ως ανιχνεύσιμο" -#: build/models.py:1390 +#: build/models.py:1406 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "Η καταχωρημένη ποσότητα ({q}) δεν πρέπει να υπερβαίνει τη διαθέσιμη ποσότητα αποθέματος ({a})" -#: build/models.py:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "Στοιχείο αποθέματος είναι υπερ-κατανεμημένο" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "Η ποσότητα πρέπει να είναι μεγαλύτερη από 0" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "Η ποσότητα πρέπει να είναι 1 για σειριακό απόθεμα" -#: build/models.py:1473 +#: build/models.py:1489 msgid "Selected stock item does not match BOM line" -msgstr "" +msgstr "Το επιλεγμένο στοιχείο αποθέματος δεν ταιριάζει με τη γραμμή ΤΥ" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 @@ -1372,23 +1376,23 @@ msgstr "" #: templates/js/translated/sales_order.js:1605 #: templates/js/translated/sales_order.js:1692 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 -#: templates/js/translated/stock.js:2941 +#: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "Στοιχείο Αποθέματος" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "Στοιχείο πηγαίου αποθέματος" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "Ποσότητα αποθέματος για διάθεση για κατασκευή" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "Εγκατάσταση σε" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "Αποθήκη προορισμού" @@ -1425,8 +1429,8 @@ msgstr "Ακέραιη ποσότητα που απαιτείται για αν msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Ακέραιη ποσότητα που απαιτείται, καθώς ο λογαριασμός των υλικών περιέχει ανιχνεύσιμα μέρη" -#: build/serializers.py:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Σειριακοί αριθμοί" @@ -1441,20 +1445,20 @@ msgstr "Αυτόματη Κατανομή Σειριακών Αριθμών" #: build/serializers.py:302 msgid "Automatically allocate required items with matching serial numbers" -msgstr "" +msgstr "Αυτόματη κατανομή των απαιτούμενων στοιχείων με τους αντίστοιχους σειριακούς αριθμούς" #: build/serializers.py:337 stock/api.py:978 msgid "The following serial numbers already exist or are invalid" -msgstr "" +msgstr "Οι παρακάτω σειριακοί αριθμοί υπάρχουν ήδη ή δεν είναι έγκυροι" #: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539 msgid "A list of build outputs must be provided" -msgstr "" +msgstr "Πρέπει να παρέχεται μια λίστα με τα αποτελέσματα κατασκευής" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1466,147 +1470,147 @@ msgstr "" #: templates/js/translated/sales_order.js:1627 #: templates/js/translated/sales_order.js:1706 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164 -#: templates/js/translated/stock.js:2835 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 msgid "Location" -msgstr "" +msgstr "Τοποθεσία" #: build/serializers.py:427 msgid "Stock location for scrapped outputs" -msgstr "" +msgstr "Θέση αποθέματος για απορριφθείσες παραγωγές" #: build/serializers.py:433 msgid "Discard Allocations" -msgstr "" +msgstr "Απόρριψη Κατανομών" #: build/serializers.py:434 msgid "Discard any stock allocations for scrapped outputs" -msgstr "" +msgstr "Απορρίψτε τυχόν κατανομές αποθέματος για παραγωγές που έχουν απορριφθεί" #: build/serializers.py:439 msgid "Reason for scrapping build output(s)" -msgstr "" +msgstr "Αιτία απόρριψης προϊόντων κατασκευής" #: build/serializers.py:499 msgid "Location for completed build outputs" -msgstr "" +msgstr "Τοποθεσία για ολοκληρωμένα προϊόντα κατασκευής" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 #: templates/js/translated/purchase_order.js:1723 #: templates/js/translated/return_order.js:331 #: templates/js/translated/sales_order.js:819 -#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959 -#: templates/js/translated/stock.js:3084 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 msgid "Status" -msgstr "" +msgstr "Κατάσταση" #: build/serializers.py:511 msgid "Accept Incomplete Allocation" -msgstr "" +msgstr "Αποδοχή Ελλιπούς Δέσμευσης" #: build/serializers.py:512 msgid "Complete outputs if stock has not been fully allocated" -msgstr "" +msgstr "Ολοκλήρωσε τα προϊόντα εάν το απόθεμα δεν έχει δεσμευτεί πλήρως" #: build/serializers.py:592 msgid "Remove Allocated Stock" -msgstr "" +msgstr "Αφαίρεση Καταχωρημένου Αποθέματος" #: build/serializers.py:593 msgid "Subtract any stock which has already been allocated to this build" -msgstr "" +msgstr "Αφαίρεσε το απόθεμα που έχει κατανεμηθεί σε αυτή την κατασκευή" #: build/serializers.py:599 msgid "Remove Incomplete Outputs" -msgstr "" +msgstr "Αφαίρεση Ατελείωτων Προϊόντων" #: build/serializers.py:600 msgid "Delete any build outputs which have not been completed" -msgstr "" +msgstr "Διαγράψτε τυχόν προϊόντα κατασκευής που δεν έχουν ολοκληρωθεί" #: build/serializers.py:627 msgid "Not permitted" -msgstr "" +msgstr "Δεν επιτρέπεται" #: build/serializers.py:628 msgid "Accept as consumed by this build order" -msgstr "" +msgstr "Αποδοχή ως κατανάλωση για αυτή την παραγγελία κατασκευής" #: build/serializers.py:629 msgid "Deallocate before completing this build order" -msgstr "" +msgstr "Αποδέσμευση πριν από την ολοκλήρωση αυτής της παραγγελίας κατασκευής" #: build/serializers.py:651 msgid "Overallocated Stock" -msgstr "" +msgstr "Υπερ-δεσμευμένο Απόθεμα" #: build/serializers.py:653 msgid "How do you want to handle extra stock items assigned to the build order" -msgstr "" +msgstr "Πώς θέλετε να χειριστείτε το επιπλέον απόθεμα που έχει δεσμευτεί στην παραγγελία κατασκευής" #: build/serializers.py:663 msgid "Some stock items have been overallocated" -msgstr "" +msgstr "Μερικά στοιχεία αποθέματος έχουν υπερ-δεσμευτεί" #: build/serializers.py:668 msgid "Accept Unallocated" -msgstr "" +msgstr "Αποδοχή Μη Δεσμευμένων" #: build/serializers.py:669 msgid "Accept that stock items have not been fully allocated to this build order" -msgstr "" +msgstr "Αποδεχτείτε ότι αντικείμενα αποθέματος δεν έχουν δεσμευτεί πλήρως σε αυτή την παραγγελία κατασκευής" #: build/serializers.py:679 templates/js/translated/build.js:315 msgid "Required stock has not been fully allocated" -msgstr "" +msgstr "Το απαιτούμενο απόθεμα δεν έχει δεσμευτεί πλήρως" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" -msgstr "" +msgstr "Αποδοχή Μη Ολοκληρωμένων" #: build/serializers.py:685 msgid "Accept that the required number of build outputs have not been completed" -msgstr "" +msgstr "Αποδεχτείτε ότι ο απαιτούμενος αριθμός προϊόντων κατασκευής δεν έχει ολοκληρωθεί" #: build/serializers.py:695 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" -msgstr "" +msgstr "Ο απαιτούμενος αριθμός προϊόντων δεν έχει ολοκληρωθεί" #: build/serializers.py:704 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" -msgstr "" +msgstr "Η παραγγελία κατασκευής έχει ελλιπή προϊόντα" #: build/serializers.py:734 msgid "Build Line" -msgstr "" +msgstr "Γραμμή Κατασκευής" #: build/serializers.py:744 msgid "Build output" -msgstr "" +msgstr "Προϊόν Κατασκευής" #: build/serializers.py:752 msgid "Build output must point to the same build" -msgstr "" +msgstr "Το προϊόν κατασκευής πρέπει να δείχνει στην ίδια κατασκευή" #: build/serializers.py:788 msgid "Build Line Item" -msgstr "" +msgstr "Αντικείμενο Γραμμής Κατασκευής" #: build/serializers.py:802 msgid "bom_item.part must point to the same part as the build order" -msgstr "" +msgstr "bom_item.part πρέπει να δείχνει στο ίδιο εξάρτημα με τη εντολή κατασκευής" -#: build/serializers.py:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1065 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" @@ -1619,7 +1623,7 @@ msgstr "" msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "" @@ -1659,44 +1663,45 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 #: stock/api.py:745 msgid "BOM Item" msgstr "" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1739,7 +1744,7 @@ msgstr "" #: templates/js/translated/barcode.js:496 #: templates/js/translated/barcode.js:501 msgid "Unlink Barcode" -msgstr "" +msgstr "Αποσύνδεση Barcode" #: build/templates/build/build_base.html:47 #: company/templates/company/supplier_part.html:43 @@ -1750,67 +1755,67 @@ msgstr "" #: stock/templates/stock/item_base.html:49 #: stock/templates/stock/location.html:61 msgid "Link Barcode" -msgstr "" +msgstr "Σύνδεση Barcode" #: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 #: order/templates/order/return_order_base.html:55 #: order/templates/order/sales_order_base.html:55 msgid "Print actions" -msgstr "" +msgstr "Ενέργειες εκτύπωσης" #: build/templates/build/build_base.html:60 msgid "Print build order report" -msgstr "" +msgstr "Εκτύπωση αναφοράς εντολών κατασκευής" #: build/templates/build/build_base.html:67 msgid "Build actions" -msgstr "" +msgstr "Εντολές κατασκευής" #: build/templates/build/build_base.html:71 msgid "Edit Build" -msgstr "" +msgstr "Επεξεργασία Κατασκευής" #: build/templates/build/build_base.html:73 msgid "Cancel Build" -msgstr "" +msgstr "Ακύρωση κατασκευής" #: build/templates/build/build_base.html:76 msgid "Duplicate Build" -msgstr "" +msgstr "Αντιγραφή Κατασκευής" #: build/templates/build/build_base.html:79 msgid "Delete Build" -msgstr "" +msgstr "Διαγραφή Κατασκευής" #: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 msgid "Complete Build" -msgstr "" +msgstr "Ολοκλήρωση Κατασκευής" #: build/templates/build/build_base.html:107 msgid "Build Description" -msgstr "" +msgstr "Περιγραφή Κατασκευής" #: build/templates/build/build_base.html:117 msgid "No build outputs have been created for this build order" -msgstr "" +msgstr "Δεν έχουν δημιουργηθεί προϊόντα για αυτήν την εντολή κατασκευής" #: build/templates/build/build_base.html:124 msgid "Build Order is ready to mark as completed" -msgstr "" +msgstr "Η εντολή Κατασκευής είναι έτοιμη για να επισημανθεί ως ολοκληρωμένη" #: build/templates/build/build_base.html:129 msgid "Build Order cannot be completed as outstanding outputs remain" -msgstr "" +msgstr "Η Εντολή Κατασκευής δεν μπορεί να ολοκληρωθεί καθώς υπάρχουν εκκρεμή προϊόντα" #: build/templates/build/build_base.html:134 msgid "Required build quantity has not yet been completed" -msgstr "" +msgstr "Ο απαιτούμενος αριθμός προϊόντων δεν έχει ακόμα ολοκληρωθεί" #: build/templates/build/build_base.html:139 msgid "Stock has not been fully allocated to this Build Order" -msgstr "" +msgstr "Το Απόθεμα δεν έχει κατανεμηθεί πλήρως σε αυτή την Εντολή Κατασκευής" #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:285 @@ -1826,12 +1831,12 @@ msgstr "" #: templates/js/translated/sales_order.js:835 #: templates/js/translated/sales_order.js:1867 msgid "Target Date" -msgstr "" +msgstr "Επιθυμητή Προθεσμία" #: build/templates/build/build_base.html:165 #, python-format msgid "This build was due on %(target)s" -msgstr "" +msgstr "Αυτή η κατασκευή είχε προθεσμία %(target)s" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 @@ -1843,12 +1848,12 @@ msgstr "" #: templates/js/translated/table_filters.js:626 #: templates/js/translated/table_filters.js:667 msgid "Overdue" -msgstr "" +msgstr "Εκπρόθεσμη" #: build/templates/build/build_base.html:177 #: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 msgid "Completed Outputs" -msgstr "" +msgstr "Ολοκληρωμένα Προϊόντα" #: build/templates/build/build_base.html:190 #: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524 @@ -1862,50 +1867,50 @@ msgstr "" #: templates/js/translated/pricing.js:929 #: templates/js/translated/sales_order.js:769 #: templates/js/translated/sales_order.js:992 -#: templates/js/translated/stock.js:2888 +#: templates/js/translated/stock.js:2924 msgid "Sales Order" -msgstr "" +msgstr "Εντολές Πώλησης" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 #: templates/js/translated/table_filters.js:24 msgid "Issued By" -msgstr "" +msgstr "Εκδόθηκε από" #: build/templates/build/build_base.html:211 #: build/templates/build/detail.html:94 templates/js/translated/build.js:2154 msgid "Priority" -msgstr "" +msgstr "Προτεραιότητα" #: build/templates/build/build_base.html:273 msgid "Delete Build Order" -msgstr "" +msgstr "Διαγραφή Εντολής Κατασκευής" #: build/templates/build/build_base.html:283 msgid "Build Order QR Code" -msgstr "" +msgstr "Κωδικός QR Εντολής Κατασκευής" #: build/templates/build/build_base.html:295 msgid "Link Barcode to Build Order" -msgstr "" +msgstr "Σύνδεση Barcode με την Εντολή Κατασκευής" #: build/templates/build/detail.html:15 msgid "Build Details" -msgstr "" +msgstr "Λεπτομέρειες Κατασκευής" #: build/templates/build/detail.html:38 msgid "Stock Source" -msgstr "" +msgstr "Προέλευση Αποθέματος" #: build/templates/build/detail.html:43 msgid "Stock can be taken from any available location." -msgstr "" +msgstr "Το απόθεμα μπορεί να ληφθεί από οποιαδήποτε διαθέσιμη τοποθεσία." #: build/templates/build/detail.html:49 order/models.py:1418 #: templates/js/translated/purchase_order.js:2190 msgid "Destination" -msgstr "" +msgstr "Προορισμός" #: build/templates/build/detail.html:56 msgid "Destination location not specified" @@ -1920,8 +1925,8 @@ msgstr "" #: templates/js/translated/build.js:1377 #: templates/js/translated/model_renderers.js:235 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153 -#: templates/js/translated/stock.js:3091 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" @@ -1990,27 +1995,31 @@ msgstr "" msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:210 -msgid "Incomplete Build Outputs" -msgstr "" - -#: build/templates/build/detail.html:214 -msgid "Create new build output" +#: 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:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2026,15 +2035,15 @@ msgstr "" msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" msgstr "" @@ -2112,1390 +2121,1414 @@ msgstr "" msgid "User or group responsible for this project" msgstr "" -#: common/models.py:737 +#: common/models.py:744 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:741 +#: common/models.py:748 msgid "Settings value" msgstr "" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "" -#: common/models.py:1231 +#: common/models.py:1238 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1283 +#: common/models.py:1290 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "" -#: common/models.py:1298 +#: common/models.py:1305 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "" -#: common/models.py:1305 +#: common/models.py:1312 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "" -#: common/models.py:1332 +#: common/models.py:1339 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "" -#: common/models.py:1339 +#: common/models.py:1346 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "" -#: common/models.py:1346 +#: common/models.py:1353 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1352 +#: common/models.py:1359 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1360 +#: common/models.py:1367 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1369 +#: common/models.py:1376 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1378 +#: common/models.py:1385 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1386 +#: common/models.py:1393 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1399 +#: common/models.py:1406 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "" -#: common/models.py:1411 +#: common/models.py:1418 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1415 +#: common/models.py:1422 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1421 +#: common/models.py:1428 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1427 +#: common/models.py:1434 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1433 +#: common/models.py:1440 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1439 +#: common/models.py:1446 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1505 +#: common/models.py:1512 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1512 +#: common/models.py:1519 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "" -#: common/models.py:1525 +#: common/models.py:1532 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1526 +#: common/models.py:1533 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1530 +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1532 +#: common/models.py:1539 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1540 +#: common/models.py:1547 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1548 +#: common/models.py:1555 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1564 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1580 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1588 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1595 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1603 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1611 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1618 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1632 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1645 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: 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:202 msgid "Page Size" msgstr "" -#: common/models.py:1651 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1657 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1664 +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1671 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1677 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1692 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1704 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1711 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1719 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1725 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1731 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1736 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1741 +#: 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 "Build Order Reference Pattern" msgstr "" -#: common/models.py:1743 +#: common/models.py:1764 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1757 +#: common/models.py:1778 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1765 +#: common/models.py:1786 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1773 +#: common/models.py:1794 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1780 +#: common/models.py:1801 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1787 +#: common/models.py:1808 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1795 +#: common/models.py:1816 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1803 +#: common/models.py:1824 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1811 +#: common/models.py:1832 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "" -#: common/models.py:1825 +#: common/models.py:1846 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1838 +#: common/models.py:1859 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1844 +#: common/models.py:1865 msgid "Email required" msgstr "" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1852 +#: common/models.py:1873 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "" -#: common/models.py:1859 +#: common/models.py:1880 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "" -#: common/models.py:1865 +#: common/models.py:1886 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "" -#: common/models.py:1879 +#: common/models.py:1900 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1892 +#: common/models.py:1913 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1929 +#: common/models.py:1950 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "" -#: common/models.py:1936 +#: common/models.py:1957 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1950 +#: common/models.py:1971 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1958 +#: common/models.py:1979 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1966 +#: common/models.py:1987 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1974 +#: common/models.py:1995 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2029 common/models.py:2429 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2043 +#: common/models.py:2070 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2045 +#: common/models.py:2072 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2051 +#: common/models.py:2078 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2052 +#: common/models.py:2079 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2057 +#: common/models.py:2084 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2058 +#: common/models.py:2085 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2063 +#: common/models.py:2090 msgid "Show latest parts" msgstr "" -#: common/models.py:2064 +#: common/models.py:2091 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2069 +#: common/models.py:2096 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2070 +#: common/models.py:2097 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2075 +#: common/models.py:2102 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2076 +#: common/models.py:2103 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2081 +#: common/models.py:2108 msgid "Show low stock" msgstr "" -#: common/models.py:2082 +#: common/models.py:2109 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2087 +#: common/models.py:2114 msgid "Show depleted stock" msgstr "" -#: common/models.py:2088 +#: common/models.py:2115 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2093 +#: common/models.py:2120 msgid "Show needed stock" msgstr "" -#: common/models.py:2094 +#: common/models.py:2121 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2099 +#: common/models.py:2126 msgid "Show expired stock" msgstr "" -#: common/models.py:2100 +#: common/models.py:2127 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2105 +#: common/models.py:2132 msgid "Show stale stock" msgstr "" -#: common/models.py:2106 +#: common/models.py:2133 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2111 +#: common/models.py:2138 msgid "Show pending builds" msgstr "" -#: common/models.py:2112 +#: common/models.py:2139 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2117 +#: common/models.py:2144 msgid "Show overdue builds" msgstr "" -#: common/models.py:2118 +#: common/models.py:2145 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2123 +#: common/models.py:2150 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2124 +#: common/models.py:2151 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2129 +#: common/models.py:2156 msgid "Show overdue POs" msgstr "" -#: common/models.py:2130 +#: common/models.py:2157 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2135 +#: common/models.py:2162 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2136 +#: common/models.py:2163 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2141 +#: common/models.py:2168 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2142 +#: common/models.py:2169 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2147 +#: common/models.py:2174 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2148 +#: common/models.py:2175 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2153 +#: common/models.py:2180 msgid "Show News" msgstr "" -#: common/models.py:2154 +#: common/models.py:2181 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2159 +#: common/models.py:2186 msgid "Inline label display" msgstr "" -#: common/models.py:2161 +#: common/models.py:2188 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2167 +#: common/models.py:2194 msgid "Default label printer" msgstr "" -#: common/models.py:2169 +#: common/models.py:2196 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2175 +#: common/models.py:2202 msgid "Inline report display" msgstr "" -#: common/models.py:2177 +#: common/models.py:2204 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2183 +#: common/models.py:2210 msgid "Search Parts" msgstr "" -#: common/models.py:2184 +#: common/models.py:2211 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2189 +#: common/models.py:2216 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2190 +#: common/models.py:2217 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2195 +#: common/models.py:2222 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2196 +#: common/models.py:2223 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2201 +#: common/models.py:2228 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2202 +#: common/models.py:2229 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2207 +#: common/models.py:2234 msgid "Search Categories" msgstr "" -#: common/models.py:2208 +#: common/models.py:2235 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2213 +#: common/models.py:2240 msgid "Search Stock" msgstr "" -#: common/models.py:2214 +#: common/models.py:2241 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2219 +#: common/models.py:2246 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2221 +#: common/models.py:2248 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2227 +#: common/models.py:2254 msgid "Search Locations" msgstr "" -#: common/models.py:2228 +#: common/models.py:2255 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2233 +#: common/models.py:2260 msgid "Search Companies" msgstr "" -#: common/models.py:2234 +#: common/models.py:2261 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2239 +#: common/models.py:2266 msgid "Search Build Orders" msgstr "" -#: common/models.py:2240 +#: common/models.py:2267 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2245 +#: common/models.py:2272 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2246 +#: common/models.py:2273 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2251 +#: common/models.py:2278 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2253 +#: common/models.py:2280 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2259 +#: common/models.py:2286 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2260 +#: common/models.py:2287 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2265 +#: common/models.py:2292 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2267 +#: common/models.py:2294 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2273 +#: common/models.py:2300 msgid "Search Return Orders" msgstr "" -#: common/models.py:2274 +#: common/models.py:2301 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2279 +#: common/models.py:2306 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2281 +#: common/models.py:2308 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2287 +#: common/models.py:2314 msgid "Search Preview Results" msgstr "" -#: common/models.py:2289 +#: common/models.py:2316 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2295 +#: common/models.py:2322 msgid "Regex Search" msgstr "" -#: common/models.py:2296 +#: common/models.py:2323 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2301 +#: common/models.py:2328 msgid "Whole Word Search" msgstr "" -#: common/models.py:2302 +#: common/models.py:2329 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2307 +#: common/models.py:2334 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2308 +#: common/models.py:2335 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2313 +#: common/models.py:2340 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2314 +#: common/models.py:2341 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2319 +#: common/models.py:2346 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2320 +#: common/models.py:2347 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2325 +#: common/models.py:2352 msgid "Date Format" msgstr "" -#: common/models.py:2326 +#: common/models.py:2353 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2366 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2340 +#: common/models.py:2367 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2372 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2347 +#: common/models.py:2374 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2353 +#: common/models.py:2380 msgid "Table String Length" msgstr "" -#: common/models.py:2355 +#: common/models.py:2382 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2361 +#: common/models.py:2388 msgid "Default part label template" msgstr "" -#: common/models.py:2362 +#: common/models.py:2389 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2367 +#: common/models.py:2394 msgid "Default stock item template" msgstr "" -#: common/models.py:2369 +#: common/models.py:2396 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2375 +#: common/models.py:2402 msgid "Default stock location label template" msgstr "" -#: common/models.py:2377 +#: common/models.py:2404 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2383 +#: common/models.py:2410 msgid "Receive error reports" msgstr "" -#: common/models.py:2384 +#: common/models.py:2411 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2389 +#: common/models.py:2416 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2417 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2460 msgid "Price break quantity" msgstr "" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3503,23 +3536,23 @@ msgstr "" msgid "Price" msgstr "" -#: common/models.py:2441 +#: common/models.py:2468 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2639 common/models.py:2824 msgid "Endpoint" msgstr "" -#: common/models.py:2613 +#: common/models.py:2640 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2623 +#: common/models.py:2650 msgid "Name for this webhook" msgstr "" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3529,101 +3562,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2627 +#: common/models.py:2654 msgid "Is this webhook active" msgstr "" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2670 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2644 +#: common/models.py:2671 msgid "Token for access" msgstr "" -#: common/models.py:2652 +#: common/models.py:2679 msgid "Secret" msgstr "" -#: common/models.py:2653 +#: common/models.py:2680 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2761 +#: common/models.py:2788 msgid "Message ID" msgstr "" -#: common/models.py:2762 +#: common/models.py:2789 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2770 +#: common/models.py:2797 msgid "Host" msgstr "" -#: common/models.py:2771 +#: common/models.py:2798 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2779 +#: common/models.py:2806 msgid "Header" msgstr "" -#: common/models.py:2780 +#: common/models.py:2807 msgid "Header of this message" msgstr "" -#: common/models.py:2787 +#: common/models.py:2814 msgid "Body" msgstr "" -#: common/models.py:2788 +#: common/models.py:2815 msgid "Body of this message" msgstr "" -#: common/models.py:2798 +#: common/models.py:2825 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2803 +#: common/models.py:2830 msgid "Worked on" msgstr "" -#: common/models.py:2804 +#: common/models.py:2831 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2930 +#: common/models.py:2957 msgid "Id" msgstr "" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2959 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2963 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2965 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2967 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Read" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Was this news item read?" msgstr "" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2987 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3633,31 +3666,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2960 +#: common/models.py:2987 msgid "Image file" msgstr "" -#: common/models.py:3002 +#: common/models.py:3029 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3021 +#: common/models.py:3048 msgid "Unit name" msgstr "" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3029 +#: common/models.py:3056 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3037 +#: common/models.py:3064 msgid "Unit definition" msgstr "" @@ -3961,7 +3994,7 @@ msgid "Link to address information (external)" msgstr "" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" @@ -3972,7 +4005,7 @@ msgstr "" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3987,7 +4020,7 @@ msgid "Select manufacturer" msgstr "" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4022,9 +4055,9 @@ msgstr "" #: company/models.py:615 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2438 templates/js/translated/company.js:1156 +#: stock/models.py:2441 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1519 msgid "Value" msgstr "" @@ -4033,7 +4066,7 @@ msgid "Parameter value" msgstr "" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4059,7 +4092,7 @@ msgstr "" #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4076,7 +4109,7 @@ msgstr "" msgid "Select supplier" msgstr "" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "" @@ -4093,13 +4126,13 @@ msgid "Supplier part description" msgstr "" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:579 msgid "Note" msgstr "" @@ -4112,10 +4145,10 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 -#: templates/js/translated/stock.js:2387 +#: templates/js/translated/stock.js:2423 msgid "Packaging" msgstr "" @@ -4157,7 +4190,7 @@ msgstr "" msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "" @@ -4218,13 +4251,13 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1100 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 #: templates/js/translated/return_order.js:296 #: templates/js/translated/sales_order.js:784 -#: templates/js/translated/stock.js:2923 +#: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:804 msgid "Customer" msgstr "" @@ -4429,8 +4462,9 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "" @@ -4482,7 +4516,7 @@ msgstr "" #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2243 +#: templates/js/translated/stock.js:2279 msgid "Supplier Part" msgstr "" @@ -4528,7 +4562,7 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4577,15 +4611,17 @@ msgstr "" msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 -#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:193 msgid "Stock Items" msgstr "" @@ -4639,8 +4675,8 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" @@ -4665,7 +4701,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "" @@ -4679,8 +4715,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "" @@ -4821,7 +4857,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1674 -#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "" @@ -4830,7 +4866,7 @@ msgstr "" #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 -#: templates/js/translated/stock.js:2905 +#: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "" @@ -4838,11 +4874,11 @@ msgstr "" msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -5029,9 +5065,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2274 +#: templates/js/translated/stock.js:2310 msgid "Purchase Price" msgstr "" @@ -5084,8 +5120,8 @@ msgstr "" msgid "User who checked this shipment" msgstr "" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "" @@ -5133,7 +5169,7 @@ msgstr "" msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "" @@ -5207,159 +5243,159 @@ msgstr "" msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:610 +#: order/serializers.py:632 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1677 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "" @@ -5733,7 +5769,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" @@ -5763,12 +5799,12 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5780,12 +5816,12 @@ msgstr "" #: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 -#: templates/js/translated/stock.js:1999 +#: templates/js/translated/stock.js:2035 msgid "IPN" msgstr "" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" @@ -5861,10 +5897,10 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -5885,17 +5921,17 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3897 msgid "Part IPN" msgstr "" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5973,8 +6009,8 @@ msgstr "" msgid "This option must be selected" msgstr "" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5982,12 +6018,17 @@ msgstr "" msgid "Category" msgstr "" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5995,7 +6036,7 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -6010,7 +6051,8 @@ msgstr "" msgid "Default location for parts in this category" msgstr "" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 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" @@ -6076,7 +6118,7 @@ msgstr "" msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3896 msgid "Part name" msgstr "" @@ -6358,7 +6400,7 @@ msgstr "" #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1732 -#: templates/js/translated/stock.js:2785 +#: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" @@ -6410,586 +6452,602 @@ msgstr "" msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3448 -msgid "Test with this name already exists for this part" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "" -#: part/models.py:3496 +#: part/models.py:3505 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "" -#: part/models.py:3503 +#: part/models.py:3512 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3847 +#: part/models.py:3856 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3885 +#: part/models.py:3894 msgid "Part ID or part name" msgstr "" -#: part/models.py:3886 +#: part/models.py:3895 msgid "Unique part ID value" msgstr "" -#: part/models.py:3888 +#: part/models.py:3897 msgid "Part IPN value" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "Level" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "BOM level" msgstr "" -#: part/models.py:3979 +#: part/models.py:3988 msgid "Select parent part" msgstr "" -#: part/models.py:3989 +#: part/models.py:3998 msgid "Sub part" msgstr "" -#: part/models.py:3990 +#: part/models.py:3999 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4001 +#: part/models.py:4010 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4007 +#: part/models.py:4016 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4013 +#: part/models.py:4022 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4029 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4021 +#: part/models.py:4030 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4028 +#: part/models.py:4037 msgid "BOM item reference" msgstr "" -#: part/models.py:4036 +#: part/models.py:4045 msgid "BOM item notes" msgstr "" -#: part/models.py:4042 +#: part/models.py:4051 msgid "Checksum" msgstr "" -#: part/models.py:4043 +#: part/models.py:4052 msgid "BOM line checksum" msgstr "" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4057 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4049 +#: part/models.py:4058 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4063 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:4055 +#: part/models.py:4064 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4069 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4061 +#: part/models.py:4070 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4146 stock/models.py:649 +#: part/models.py:4155 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4165 part/models.py:4167 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4298 +#: part/models.py:4307 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4319 +#: part/models.py:4328 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4332 +#: part/models.py:4341 msgid "Parent BOM item" msgstr "" -#: part/models.py:4340 +#: part/models.py:4349 msgid "Substitute part" msgstr "" -#: part/models.py:4356 +#: part/models.py:4365 msgid "Part 1" msgstr "" -#: part/models.py:4364 +#: part/models.py:4373 msgid "Part 2" msgstr "" -#: part/models.py:4365 +#: part/models.py:4374 msgid "Select Related Part" msgstr "" -#: part/models.py:4384 +#: part/models.py:4393 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4389 +#: part/models.py:4398 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:432 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:480 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1104 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1078 +#: part/serializers.py:1114 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1088 +#: part/serializers.py:1124 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1647 +#: part/serializers.py:1693 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1659 +#: part/serializers.py:1705 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1694 +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "" @@ -7147,7 +7205,7 @@ msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/stock.js:2179 users/models.py:191 +#: templates/js/translated/stock.js:2215 users/models.py:191 msgid "Stocktake" msgstr "" @@ -7221,7 +7279,7 @@ msgid "Validate BOM" msgstr "" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "" @@ -7405,7 +7463,7 @@ msgstr "" msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "" @@ -7509,7 +7567,7 @@ msgstr "" #: templates/InvenTree/settings/sidebar.html:51 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 -#: templates/js/translated/stock.js:2033 templates/navbar.html:31 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7555,7 +7613,7 @@ msgstr "" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 -#: templates/js/translated/stock.js:2209 +#: templates/js/translated/stock.js:2245 msgid "Last Updated" msgstr "" @@ -7999,7 +8057,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "" @@ -8307,16 +8365,16 @@ msgstr "" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "" @@ -8336,103 +8394,111 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" msgstr "" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" msgstr "" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8499,12 +8565,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1492 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Result" msgstr "" @@ -8531,7 +8597,7 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:168 #: stock/admin.py:162 templates/js/translated/stock.js:700 -#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110 msgid "Serial" msgstr "" @@ -8615,7 +8681,7 @@ msgstr "" #: stock/admin.py:256 stock/models.py:886 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2193 users/models.py:113 +#: templates/js/translated/stock.js:2229 users/models.py:113 msgid "Expiry Date" msgstr "" @@ -8713,7 +8779,7 @@ msgstr "" msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:174 templates/js/translated/stock.js:2745 +#: stock/models.py:174 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" @@ -8722,7 +8788,7 @@ msgstr "" msgid "This is an external stock location" msgstr "" -#: stock/models.py:181 templates/js/translated/stock.js:2754 +#: stock/models.py:181 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" @@ -8739,7 +8805,7 @@ msgstr "" msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:290 msgid "Stock item cannot be created for virtual parts" msgstr "" @@ -8784,7 +8850,7 @@ msgstr "" msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1351 msgid "Packaging this stock item is stored in" msgstr "" @@ -8796,7 +8862,7 @@ msgstr "" msgid "Serial number for this item" msgstr "" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1334 msgid "Batch code for this stock item" msgstr "" @@ -8873,7 +8939,7 @@ msgstr "" msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:529 msgid "Serial numbers already exist" msgstr "" @@ -8905,7 +8971,7 @@ msgstr "" msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1240 msgid "Duplicate stock items" msgstr "" @@ -8929,207 +8995,236 @@ msgstr "" msgid "Entry notes" msgstr "" -#: stock/models.py:2399 +#: stock/models.py:2402 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2405 +#: stock/models.py:2408 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Test result" msgstr "" -#: stock/models.py:2439 +#: stock/models.py:2442 msgid "Test output value" msgstr "" -#: stock/models.py:2447 +#: stock/models.py:2450 msgid "Test result attachment" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2454 msgid "Test notes" msgstr "" -#: stock/serializers.py:96 +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "" + +#: stock/models.py:2463 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2469 +msgid "Started" +msgstr "" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:100 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:119 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 +#: stock/serializers.py:151 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:184 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:267 +#: stock/serializers.py:282 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:380 +#: stock/serializers.py:402 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:442 +#: stock/serializers.py:464 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:455 +#: stock/serializers.py:477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:462 +#: stock/serializers.py:484 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:480 +#: stock/serializers.py:502 msgid "Optional note field" msgstr "" -#: stock/serializers.py:490 +#: stock/serializers.py:512 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:545 +#: stock/serializers.py:567 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:574 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:553 +#: stock/serializers.py:575 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:566 +#: stock/serializers.py:588 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:596 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:581 +#: stock/serializers.py:607 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:620 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:628 +#: stock/serializers.py:655 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:663 +#: stock/serializers.py:690 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:676 +#: stock/serializers.py:703 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:693 +#: stock/serializers.py:720 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:724 +#: stock/serializers.py:751 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:761 +#: stock/serializers.py:788 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:767 +#: stock/serializers.py:794 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1036 +#: stock/serializers.py:1069 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1040 +#: stock/serializers.py:1073 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1044 +#: stock/serializers.py:1077 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1068 +#: stock/serializers.py:1101 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1074 +#: stock/serializers.py:1107 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1082 +#: stock/serializers.py:1115 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1125 stock/serializers.py:1379 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1171 +#: stock/serializers.py:1204 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1176 +#: stock/serializers.py:1209 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1177 +#: stock/serializers.py:1210 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1182 +#: stock/serializers.py:1215 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1183 +#: stock/serializers.py:1216 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1193 +#: stock/serializers.py:1226 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1260 +#: stock/serializers.py:1293 msgid "No Change" msgstr "" -#: stock/serializers.py:1289 +#: stock/serializers.py:1322 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1308 +#: stock/serializers.py:1341 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1336 +#: stock/serializers.py:1369 msgid "Stock transaction notes" msgstr "" @@ -9154,7 +9249,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 msgid "Delete Test Data" msgstr "" @@ -9170,15 +9265,15 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:274 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 msgid "Add Test Result" msgstr "" @@ -9201,17 +9296,17 @@ msgid "Stock adjustment actions" msgstr "" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 msgid "Count stock" msgstr "" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:1803 msgid "Add stock" msgstr "" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1776 +#: templates/js/translated/stock.js:1812 msgid "Remove stock" msgstr "" @@ -9220,12 +9315,12 @@ msgid "Serialize stock" msgstr "" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 msgid "Transfer stock" msgstr "" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1884 msgid "Assign to customer" msgstr "" @@ -9364,7 +9459,7 @@ msgid "No stocktake performed" msgstr "" #: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1915 +#: templates/js/translated/stock.js:1951 msgid "stock item" msgstr "" @@ -9469,7 +9564,7 @@ msgid "New Location" msgstr "" #: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2536 +#: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" @@ -10063,7 +10158,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:37 msgid "New Location Type" msgstr "" @@ -10120,7 +10215,7 @@ msgstr "" msgid "Stock Settings" msgstr "" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:33 msgid "Stock Location Types" msgstr "" @@ -10662,7 +10757,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "" @@ -10676,7 +10771,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "" @@ -11051,62 +11146,66 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "" @@ -11389,7 +11488,7 @@ msgstr "" #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 -#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11401,7 +11500,7 @@ msgstr "" msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006 +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" @@ -11449,29 +11548,29 @@ msgstr "" msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "" @@ -11804,15 +11903,15 @@ msgstr "" msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3087 +#: templates/js/translated/forms.js:3103 msgid "Select Columns" msgstr "" @@ -12289,7 +12388,7 @@ msgid "No category" msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 -#: templates/js/translated/stock.js:2633 +#: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" @@ -12301,7 +12400,7 @@ msgstr "" msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" @@ -12313,64 +12412,64 @@ msgstr "" msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" @@ -12907,7 +13006,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1737 +#: templates/js/translated/stock.js:1773 msgid "Shipped to customer" msgstr "" @@ -13165,7 +13264,7 @@ msgstr "" msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" @@ -13189,248 +13288,256 @@ msgstr "" msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1440 +#: templates/js/translated/stock.js:1447 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1443 +#: templates/js/translated/stock.js:1450 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1466 +#: templates/js/translated/stock.js:1473 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1530 +#: templates/js/translated/stock.js:1537 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1677 +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1733 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1729 +#: templates/js/translated/stock.js:1765 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1769 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1741 +#: templates/js/translated/stock.js:1777 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1747 +#: templates/js/translated/stock.js:1783 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1839 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1848 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:1897 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1916 +#: templates/js/translated/stock.js:1952 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1921 +#: templates/js/translated/stock.js:1957 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1932 +#: templates/js/translated/stock.js:1968 msgid "Stock Actions" msgstr "" -#: templates/js/translated/stock.js:1976 +#: templates/js/translated/stock.js:2012 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2054 +#: templates/js/translated/stock.js:2090 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2059 +#: templates/js/translated/stock.js:2095 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2062 +#: templates/js/translated/stock.js:2098 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2065 +#: templates/js/translated/stock.js:2101 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2067 +#: templates/js/translated/stock.js:2103 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2069 +#: templates/js/translated/stock.js:2105 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2072 +#: templates/js/translated/stock.js:2108 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2074 +#: templates/js/translated/stock.js:2110 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2114 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2080 +#: templates/js/translated/stock.js:2116 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2085 +#: templates/js/translated/stock.js:2121 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2087 +#: templates/js/translated/stock.js:2123 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2089 +#: templates/js/translated/stock.js:2125 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2129 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2258 +#: templates/js/translated/stock.js:2294 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2305 +#: templates/js/translated/stock.js:2341 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2433 +#: templates/js/translated/stock.js:2469 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2573 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2692 +#: templates/js/translated/stock.js:2728 msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2810 +#: templates/js/translated/stock.js:2846 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2814 +#: templates/js/translated/stock.js:2850 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:2862 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2848 +#: templates/js/translated/stock.js:2884 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2865 +#: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2880 +#: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2897 +#: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2914 +#: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3005 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2977 +#: templates/js/translated/stock.js:3013 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:3049 +#: templates/js/translated/stock.js:3085 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139 +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:3161 +#: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:3182 +#: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:3183 +#: 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:3185 +#: 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:3186 +#: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:3187 +#: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:3188 +#: 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:3201 +#: templates/js/translated/stock.js:3237 msgid "Select part to install" msgstr "" -#: templates/js/translated/stock.js:3264 +#: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" msgstr "" -#: templates/js/translated/stock.js:3277 +#: templates/js/translated/stock.js:3313 msgid "Selected stock items" msgstr "" -#: templates/js/translated/stock.js:3281 +#: templates/js/translated/stock.js:3317 msgid "Change Stock Status" msgstr "" diff --git a/InvenTree/locale/en/LC_MESSAGES/django.po b/InvenTree/locale/en/LC_MESSAGES/django.po index a6f744f447..913b7a621d 100644 --- a/InvenTree/locale/en/LC_MESSAGES/django.po +++ b/InvenTree/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 06:44+0000\n" +"POT-Creation-Date: 2024-03-15 22:12+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -31,20 +31,20 @@ msgstr "" msgid "Invalid unit provided ({unit})" msgstr "" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" msgstr "" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" msgstr "" @@ -66,10 +66,10 @@ msgstr "" #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/serializers.py:487 stock/serializers.py:645 stock/serializers.py:741 +#: stock/serializers.py:791 stock/serializers.py:1100 stock/serializers.py:1189 +#: stock/serializers.py:1354 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 @@ -133,42 +133,42 @@ msgstr "" msgid "Registration is disabled." msgstr "" -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "" @@ -402,7 +402,7 @@ msgstr "" msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2955 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -433,9 +433,9 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2431 +#: common/models.py:2432 common/models.py:2656 common/models.py:2657 +#: common/models.py:2902 common/models.py:2903 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 @@ -480,10 +480,10 @@ msgstr "" msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2643 common/models.py:3041 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -507,10 +507,10 @@ msgstr "" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -524,7 +524,7 @@ msgstr "" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -582,7 +582,7 @@ msgstr "" msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:62 part/models.py:4134 +#: InvenTree/serializers.py:62 part/models.py:4143 msgid "Must be a valid number" msgstr "" @@ -679,7 +679,7 @@ msgstr "" msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/status.py:66 part/serializers.py:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "" @@ -939,14 +939,14 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -961,7 +961,7 @@ msgid "Tracked" msgstr "" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -1015,7 +1015,7 @@ msgstr "" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1045,11 +1045,11 @@ msgstr "" #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1060,7 +1060,7 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:253 stock/serializers.py:675 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1147,8 +1147,8 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1319 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" @@ -1243,53 +1243,53 @@ msgstr "" msgid "Project code for this build order" msgstr "" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "" -#: build/models.py:789 +#: build/models.py:805 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:458 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" msgstr "" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2453 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1299,7 +1299,7 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:449 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1311,7 +1311,7 @@ msgstr "" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1331,38 +1331,38 @@ msgstr "" msgid "Quantity" msgstr "" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1381 +#: build/models.py:1397 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1390 +#: build/models.py:1406 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1473 +#: build/models.py:1489 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:552 stock/serializers.py:1038 +#: stock/serializers.py:1150 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:1742 @@ -1377,19 +1377,19 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "" @@ -1426,8 +1426,8 @@ msgstr "" msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:469 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" @@ -1452,10 +1452,10 @@ msgstr "" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:480 stock/serializers.py:640 stock/serializers.py:736 +#: stock/serializers.py:1182 stock/serializers.py:1438 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1494,8 +1494,8 @@ msgstr "" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:787 stock/serializers.py:1326 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 @@ -1567,7 +1567,7 @@ msgstr "" msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "" @@ -1603,11 +1603,11 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1051 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" @@ -1620,7 +1620,7 @@ msgstr "" msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "" @@ -1660,44 +1660,45 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 #: stock/api.py:745 msgid "BOM Item" msgstr "" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1991,27 +1992,31 @@ msgstr "" msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:210 -msgid "Incomplete Build Outputs" -msgstr "" - -#: build/templates/build/detail.html:214 -msgid "Create new build output" +#: 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:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2027,15 +2032,15 @@ msgstr "" msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" msgstr "" @@ -2113,1390 +2118,1406 @@ msgstr "" msgid "User or group responsible for this project" msgstr "" -#: common/models.py:737 +#: common/models.py:744 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:741 +#: common/models.py:748 msgid "Settings value" msgstr "" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "" -#: common/models.py:1231 +#: common/models.py:1238 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1283 +#: common/models.py:1290 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "" -#: common/models.py:1298 +#: common/models.py:1305 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "" -#: common/models.py:1305 +#: common/models.py:1312 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "" -#: common/models.py:1332 +#: common/models.py:1339 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "" -#: common/models.py:1339 +#: common/models.py:1346 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "" -#: common/models.py:1346 +#: common/models.py:1353 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1352 +#: common/models.py:1359 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1360 +#: common/models.py:1367 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1369 +#: common/models.py:1376 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1378 +#: common/models.py:1385 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1386 +#: common/models.py:1393 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1399 +#: common/models.py:1406 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "" -#: common/models.py:1411 +#: common/models.py:1418 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1415 +#: common/models.py:1422 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1421 +#: common/models.py:1428 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1427 +#: common/models.py:1434 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1433 +#: common/models.py:1440 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1439 +#: common/models.py:1446 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:96 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1505 +#: common/models.py:1512 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1512 +#: common/models.py:1519 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "" -#: common/models.py:1525 +#: common/models.py:1532 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1526 +#: common/models.py:1533 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1530 +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1532 +#: common/models.py:1539 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1540 +#: common/models.py:1547 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1548 +#: common/models.py:1555 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1564 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1580 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1588 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1595 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1603 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1611 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1618 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1632 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1645 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: 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:202 msgid "Page Size" msgstr "" -#: common/models.py:1651 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1657 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1664 +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1671 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1677 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1692 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1704 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1711 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1719 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1725 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1731 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1736 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1741 +#: 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 "Build Order Reference Pattern" msgstr "" -#: common/models.py:1743 +#: common/models.py:1764 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1757 +#: common/models.py:1778 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1765 +#: common/models.py:1786 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1773 +#: common/models.py:1794 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1780 +#: common/models.py:1801 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1787 +#: common/models.py:1808 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1795 +#: common/models.py:1816 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1803 +#: common/models.py:1824 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1811 +#: common/models.py:1832 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "" -#: common/models.py:1825 +#: common/models.py:1846 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1838 +#: common/models.py:1859 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1844 +#: common/models.py:1865 msgid "Email required" msgstr "" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1852 +#: common/models.py:1873 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "" -#: common/models.py:1859 +#: common/models.py:1880 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "" -#: common/models.py:1865 +#: common/models.py:1886 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "" -#: common/models.py:1879 +#: common/models.py:1900 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1892 +#: common/models.py:1913 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1929 +#: common/models.py:1950 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "" -#: common/models.py:1936 +#: common/models.py:1957 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1950 +#: common/models.py:1971 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1958 +#: common/models.py:1979 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1966 +#: common/models.py:1987 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1974 +#: common/models.py:1995 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2023 common/models.py:2423 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2043 +#: common/models.py:2064 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2045 +#: common/models.py:2066 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2051 +#: common/models.py:2072 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2052 +#: common/models.py:2073 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2057 +#: common/models.py:2078 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2058 +#: common/models.py:2079 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2063 +#: common/models.py:2084 msgid "Show latest parts" msgstr "" -#: common/models.py:2064 +#: common/models.py:2085 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2069 +#: common/models.py:2090 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2070 +#: common/models.py:2091 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2075 +#: common/models.py:2096 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2076 +#: common/models.py:2097 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2081 +#: common/models.py:2102 msgid "Show low stock" msgstr "" -#: common/models.py:2082 +#: common/models.py:2103 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2087 +#: common/models.py:2108 msgid "Show depleted stock" msgstr "" -#: common/models.py:2088 +#: common/models.py:2109 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2093 +#: common/models.py:2114 msgid "Show needed stock" msgstr "" -#: common/models.py:2094 +#: common/models.py:2115 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2099 +#: common/models.py:2120 msgid "Show expired stock" msgstr "" -#: common/models.py:2100 +#: common/models.py:2121 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2105 +#: common/models.py:2126 msgid "Show stale stock" msgstr "" -#: common/models.py:2106 +#: common/models.py:2127 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2111 +#: common/models.py:2132 msgid "Show pending builds" msgstr "" -#: common/models.py:2112 +#: common/models.py:2133 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2117 +#: common/models.py:2138 msgid "Show overdue builds" msgstr "" -#: common/models.py:2118 +#: common/models.py:2139 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2123 +#: common/models.py:2144 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2124 +#: common/models.py:2145 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2129 +#: common/models.py:2150 msgid "Show overdue POs" msgstr "" -#: common/models.py:2130 +#: common/models.py:2151 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2135 +#: common/models.py:2156 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2136 +#: common/models.py:2157 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2141 +#: common/models.py:2162 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2142 +#: common/models.py:2163 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2147 +#: common/models.py:2168 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2148 +#: common/models.py:2169 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2153 +#: common/models.py:2174 msgid "Show News" msgstr "" -#: common/models.py:2154 +#: common/models.py:2175 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2159 +#: common/models.py:2180 msgid "Inline label display" msgstr "" -#: common/models.py:2161 +#: common/models.py:2182 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2167 +#: common/models.py:2188 msgid "Default label printer" msgstr "" -#: common/models.py:2169 +#: common/models.py:2190 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2175 +#: common/models.py:2196 msgid "Inline report display" msgstr "" -#: common/models.py:2177 +#: common/models.py:2198 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2183 +#: common/models.py:2204 msgid "Search Parts" msgstr "" -#: common/models.py:2184 +#: common/models.py:2205 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2189 +#: common/models.py:2210 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2190 +#: common/models.py:2211 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2195 +#: common/models.py:2216 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2196 +#: common/models.py:2217 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2201 +#: common/models.py:2222 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2202 +#: common/models.py:2223 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2207 +#: common/models.py:2228 msgid "Search Categories" msgstr "" -#: common/models.py:2208 +#: common/models.py:2229 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2213 +#: common/models.py:2234 msgid "Search Stock" msgstr "" -#: common/models.py:2214 +#: common/models.py:2235 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2219 +#: common/models.py:2240 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2221 +#: common/models.py:2242 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2227 +#: common/models.py:2248 msgid "Search Locations" msgstr "" -#: common/models.py:2228 +#: common/models.py:2249 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2233 +#: common/models.py:2254 msgid "Search Companies" msgstr "" -#: common/models.py:2234 +#: common/models.py:2255 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2239 +#: common/models.py:2260 msgid "Search Build Orders" msgstr "" -#: common/models.py:2240 +#: common/models.py:2261 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2245 +#: common/models.py:2266 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2246 +#: common/models.py:2267 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2251 +#: common/models.py:2272 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2253 +#: common/models.py:2274 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2259 +#: common/models.py:2280 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2260 +#: common/models.py:2281 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2265 +#: common/models.py:2286 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2267 +#: common/models.py:2288 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2273 +#: common/models.py:2294 msgid "Search Return Orders" msgstr "" -#: common/models.py:2274 +#: common/models.py:2295 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2279 +#: common/models.py:2300 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2281 +#: common/models.py:2302 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2287 +#: common/models.py:2308 msgid "Search Preview Results" msgstr "" -#: common/models.py:2289 +#: common/models.py:2310 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2295 +#: common/models.py:2316 msgid "Regex Search" msgstr "" -#: common/models.py:2296 +#: common/models.py:2317 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2301 +#: common/models.py:2322 msgid "Whole Word Search" msgstr "" -#: common/models.py:2302 +#: common/models.py:2323 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2307 +#: common/models.py:2328 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2308 +#: common/models.py:2329 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2313 +#: common/models.py:2334 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2314 +#: common/models.py:2335 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2319 +#: common/models.py:2340 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2320 +#: common/models.py:2341 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2325 +#: common/models.py:2346 msgid "Date Format" msgstr "" -#: common/models.py:2326 +#: common/models.py:2347 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2360 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2340 +#: common/models.py:2361 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2366 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2347 +#: common/models.py:2368 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2353 +#: common/models.py:2374 msgid "Table String Length" msgstr "" -#: common/models.py:2355 +#: common/models.py:2376 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2361 +#: common/models.py:2382 msgid "Default part label template" msgstr "" -#: common/models.py:2362 +#: common/models.py:2383 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2367 +#: common/models.py:2388 msgid "Default stock item template" msgstr "" -#: common/models.py:2369 +#: common/models.py:2390 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2375 +#: common/models.py:2396 msgid "Default stock location label template" msgstr "" -#: common/models.py:2377 +#: common/models.py:2398 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2383 +#: common/models.py:2404 msgid "Receive error reports" msgstr "" -#: common/models.py:2384 +#: common/models.py:2405 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2389 +#: common/models.py:2410 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2411 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2454 msgid "Price break quantity" msgstr "" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2461 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3504,23 +3525,23 @@ msgstr "" msgid "Price" msgstr "" -#: common/models.py:2441 +#: common/models.py:2462 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2633 common/models.py:2818 msgid "Endpoint" msgstr "" -#: common/models.py:2613 +#: common/models.py:2634 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2623 +#: common/models.py:2644 msgid "Name for this webhook" msgstr "" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2648 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3530,101 +3551,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2627 +#: common/models.py:2648 msgid "Is this webhook active" msgstr "" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2664 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2644 +#: common/models.py:2665 msgid "Token for access" msgstr "" -#: common/models.py:2652 +#: common/models.py:2673 msgid "Secret" msgstr "" -#: common/models.py:2653 +#: common/models.py:2674 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2761 +#: common/models.py:2782 msgid "Message ID" msgstr "" -#: common/models.py:2762 +#: common/models.py:2783 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2770 +#: common/models.py:2791 msgid "Host" msgstr "" -#: common/models.py:2771 +#: common/models.py:2792 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2779 +#: common/models.py:2800 msgid "Header" msgstr "" -#: common/models.py:2780 +#: common/models.py:2801 msgid "Header of this message" msgstr "" -#: common/models.py:2787 +#: common/models.py:2808 msgid "Body" msgstr "" -#: common/models.py:2788 +#: common/models.py:2809 msgid "Body of this message" msgstr "" -#: common/models.py:2798 +#: common/models.py:2819 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2803 +#: common/models.py:2824 msgid "Worked on" msgstr "" -#: common/models.py:2804 +#: common/models.py:2825 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2930 +#: common/models.py:2951 msgid "Id" msgstr "" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2953 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2957 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2959 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2961 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2943 +#: common/models.py:2964 msgid "Read" msgstr "" -#: common/models.py:2943 +#: common/models.py:2964 msgid "Was this news item read?" msgstr "" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2981 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3634,31 +3655,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2960 +#: common/models.py:2981 msgid "Image file" msgstr "" -#: common/models.py:3002 +#: common/models.py:3023 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3021 +#: common/models.py:3042 msgid "Unit name" msgstr "" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3049 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3029 +#: common/models.py:3050 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3057 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3037 +#: common/models.py:3058 msgid "Unit definition" msgstr "" @@ -3962,7 +3983,7 @@ msgid "Link to address information (external)" msgstr "" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:252 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" @@ -3973,7 +3994,7 @@ msgstr "" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3988,7 +4009,7 @@ msgid "Select manufacturer" msgstr "" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4034,7 +4055,7 @@ msgid "Parameter value" msgstr "" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4060,7 +4081,7 @@ msgstr "" #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4077,7 +4098,7 @@ msgstr "" msgid "Select supplier" msgstr "" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "" @@ -4094,13 +4115,13 @@ msgid "Supplier part description" msgstr "" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:565 msgid "Note" msgstr "" @@ -4113,7 +4134,7 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1336 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2387 @@ -4158,7 +4179,7 @@ msgstr "" msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "" @@ -4219,7 +4240,7 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1086 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4430,8 +4451,9 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "" @@ -4529,7 +4551,7 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4578,10 +4600,12 @@ msgstr "" msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:773 stock/serializers.py:937 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4640,8 +4664,8 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" @@ -4666,7 +4690,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "" @@ -4680,8 +4704,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "" @@ -4839,11 +4863,11 @@ msgstr "" msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -5030,7 +5054,7 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:386 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2274 msgid "Purchase Price" @@ -5085,8 +5109,8 @@ msgstr "" msgid "User who checked this shipment" msgstr "" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "" @@ -5134,7 +5158,7 @@ msgstr "" msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "" @@ -5208,159 +5232,159 @@ msgstr "" msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:610 +#: order/serializers.py:632 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1677 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "" @@ -5734,7 +5758,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" @@ -5764,12 +5788,12 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5786,7 +5810,7 @@ msgid "IPN" msgstr "" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" @@ -5862,10 +5886,10 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -5886,17 +5910,17 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3897 msgid "Part IPN" msgstr "" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5974,8 +5998,8 @@ msgstr "" msgid "This option must be selected" msgstr "" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5983,12 +6007,17 @@ msgstr "" msgid "Category" msgstr "" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5996,7 +6025,7 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -6011,7 +6040,8 @@ msgstr "" msgid "Default location for parts in this category" msgstr "" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810 +#: templates/js/translated/stock.js:2736 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" @@ -6077,7 +6107,7 @@ msgstr "" msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3896 msgid "Part name" msgstr "" @@ -6411,586 +6441,602 @@ msgstr "" msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3448 -msgid "Test with this name already exists for this part" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "" -#: part/models.py:3496 +#: part/models.py:3505 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "" -#: part/models.py:3503 +#: part/models.py:3512 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3847 +#: part/models.py:3856 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3885 +#: part/models.py:3894 msgid "Part ID or part name" msgstr "" -#: part/models.py:3886 +#: part/models.py:3895 msgid "Unique part ID value" msgstr "" -#: part/models.py:3888 +#: part/models.py:3897 msgid "Part IPN value" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "Level" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "BOM level" msgstr "" -#: part/models.py:3979 +#: part/models.py:3988 msgid "Select parent part" msgstr "" -#: part/models.py:3989 +#: part/models.py:3998 msgid "Sub part" msgstr "" -#: part/models.py:3990 +#: part/models.py:3999 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4001 +#: part/models.py:4010 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4007 +#: part/models.py:4016 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4013 +#: part/models.py:4022 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4029 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4021 +#: part/models.py:4030 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4028 +#: part/models.py:4037 msgid "BOM item reference" msgstr "" -#: part/models.py:4036 +#: part/models.py:4045 msgid "BOM item notes" msgstr "" -#: part/models.py:4042 +#: part/models.py:4051 msgid "Checksum" msgstr "" -#: part/models.py:4043 +#: part/models.py:4052 msgid "BOM line checksum" msgstr "" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4057 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4049 +#: part/models.py:4058 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4063 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:4055 +#: part/models.py:4064 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4069 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4061 +#: part/models.py:4070 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4146 stock/models.py:649 +#: part/models.py:4155 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4165 part/models.py:4167 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4298 +#: part/models.py:4307 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4319 +#: part/models.py:4328 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4332 +#: part/models.py:4341 msgid "Parent BOM item" msgstr "" -#: part/models.py:4340 +#: part/models.py:4349 msgid "Substitute part" msgstr "" -#: part/models.py:4356 +#: part/models.py:4365 msgid "Part 1" msgstr "" -#: part/models.py:4364 +#: part/models.py:4373 msgid "Part 2" msgstr "" -#: part/models.py:4365 +#: part/models.py:4374 msgid "Select Related Part" msgstr "" -#: part/models.py:4384 +#: part/models.py:4393 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4389 +#: part/models.py:4398 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:392 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:432 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:480 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1104 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1078 +#: part/serializers.py:1114 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1088 +#: part/serializers.py:1124 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1647 +#: part/serializers.py:1693 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1659 +#: part/serializers.py:1705 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1694 +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "" @@ -7222,7 +7268,7 @@ msgid "Validate BOM" msgstr "" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "" @@ -7406,7 +7452,7 @@ msgstr "" msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "" @@ -8000,7 +8046,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "" @@ -8308,16 +8354,16 @@ msgstr "" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "" @@ -8337,103 +8383,111 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" msgstr "" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" msgstr "" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8740,7 +8794,7 @@ msgstr "" msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:276 msgid "Stock item cannot be created for virtual parts" msgstr "" @@ -8785,7 +8839,7 @@ msgstr "" msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1337 msgid "Packaging this stock item is stored in" msgstr "" @@ -8797,7 +8851,7 @@ msgstr "" msgid "Serial number for this item" msgstr "" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1320 msgid "Batch code for this stock item" msgstr "" @@ -8874,7 +8928,7 @@ msgstr "" msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:515 msgid "Serial numbers already exist" msgstr "" @@ -8906,7 +8960,7 @@ msgstr "" msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1226 msgid "Duplicate stock items" msgstr "" @@ -8954,183 +9008,184 @@ msgstr "" msgid "Test notes" msgstr "" -#: stock/serializers.py:96 +#: stock/serializers.py:97 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:116 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 +#: stock/serializers.py:170 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:267 +#: stock/serializers.py:268 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:380 +#: stock/serializers.py:388 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:442 +#: stock/serializers.py:450 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:455 +#: stock/serializers.py:463 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:462 +#: stock/serializers.py:470 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:481 stock/serializers.py:1183 stock/serializers.py:1439 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:480 +#: stock/serializers.py:488 msgid "Optional note field" msgstr "" -#: stock/serializers.py:490 +#: stock/serializers.py:498 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:545 +#: stock/serializers.py:553 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:560 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:553 +#: stock/serializers.py:561 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:566 stock/serializers.py:646 stock/serializers.py:742 +#: stock/serializers.py:792 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:566 +#: stock/serializers.py:574 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:582 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:581 +#: stock/serializers.py:593 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:606 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:628 +#: stock/serializers.py:641 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:663 +#: stock/serializers.py:676 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:676 +#: stock/serializers.py:689 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:693 +#: stock/serializers.py:706 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:724 +#: stock/serializers.py:737 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:761 +#: stock/serializers.py:774 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:767 +#: stock/serializers.py:780 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:876 stock/serializers.py:939 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1036 +#: stock/serializers.py:1055 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1040 +#: stock/serializers.py:1059 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1044 +#: stock/serializers.py:1063 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1068 +#: stock/serializers.py:1087 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1074 +#: stock/serializers.py:1093 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1082 +#: stock/serializers.py:1101 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1111 stock/serializers.py:1365 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1171 +#: stock/serializers.py:1190 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1176 +#: stock/serializers.py:1195 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1177 +#: stock/serializers.py:1196 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1182 +#: stock/serializers.py:1201 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1183 +#: stock/serializers.py:1202 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1193 +#: stock/serializers.py:1212 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1260 +#: stock/serializers.py:1279 msgid "No Change" msgstr "" -#: stock/serializers.py:1289 +#: stock/serializers.py:1308 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1308 +#: stock/serializers.py:1327 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1336 +#: stock/serializers.py:1355 msgid "Stock transaction notes" msgstr "" @@ -9155,7 +9210,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:283 msgid "Delete Test Data" msgstr "" @@ -9175,11 +9230,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:271 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:301 templates/js/translated/stock.js:1662 msgid "Add Test Result" msgstr "" @@ -10064,7 +10119,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:36 msgid "New Location Type" msgstr "" @@ -10121,7 +10176,7 @@ msgstr "" msgid "Stock Settings" msgstr "" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:32 msgid "Stock Location Types" msgstr "" @@ -10663,7 +10718,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "" @@ -10677,7 +10732,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "" @@ -11052,62 +11107,66 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "" @@ -11450,29 +11509,29 @@ msgstr "" msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1829 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "" @@ -12314,64 +12373,64 @@ msgstr "" msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1446 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1447 #: templates/js/translated/stock.js:1692 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" diff --git a/InvenTree/locale/es/LC_MESSAGES/django.po b/InvenTree/locale/es/LC_MESSAGES/django.po index 8484881342..d927620921 100644 --- a/InvenTree/locale/es/LC_MESSAGES/django.po +++ b/InvenTree/locale/es/LC_MESSAGES/django.po @@ -2,59 +2,59 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 04:05+0000\n" -"PO-Revision-Date: 2024-02-28 07:23\n" +"POT-Creation-Date: 2024-03-19 01:26+0000\n" +"PO-Revision-Date: 2024-03-19 11:51\n" "Last-Translator: \n" -"Language-Team: Spanish, Mexico\n" -"Language: es_MX\n" +"Language-Team: Spanish\n" +"Language: es_ES\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Crowdin-Project: inventree\n" "X-Crowdin-Project-ID: 452300\n" -"X-Crowdin-Language: es-MX\n" +"X-Crowdin-Language: es-ES\n" "X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" "X-Crowdin-File-ID: 154\n" #: InvenTree/api.py:198 msgid "API endpoint not found" -msgstr "endpoint API no encontrado" +msgstr "\"API Endpoint\" no encontrado" #: InvenTree/api.py:462 msgid "User does not have permission to view this model" -msgstr "El usuario no tiene permiso para ver este modelo" +msgstr "No tiene permisos para ver esta página" #: InvenTree/conversion.py:160 #, python-brace-format msgid "Invalid unit provided ({unit})" msgstr "" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "Ningún valor proporcionado" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "No se pudo convertir {original} a {unit}" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" -msgstr "La cantidad suministrada es inválida" +msgstr "Cantidad suministrada es inválida" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" -msgstr "La cantidad suministrada es inválida ({exc})" +msgstr "Cantidad suministrada es inválida ({exc})" #: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" -msgstr "Detalles del error pueden encontrarse en el panel de administración" +msgstr "Los detalles del error pueden encontrarse en el panel de administración" #: InvenTree/fields.py:140 msgid "Enter date" -msgstr "Ingrese la fecha" +msgstr "Seleccionar una fecha" #: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438 #: build/serializers.py:516 build/templates/build/sidebar.html:21 @@ -64,18 +64,18 @@ msgstr "Ingrese la fecha" #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 #: templates/js/translated/return_order.js:776 #: templates/js/translated/sales_order.js:1067 #: templates/js/translated/sales_order.js:1982 -#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 msgid "Notes" msgstr "Notas" @@ -90,19 +90,19 @@ msgstr "El valor proporcionado no coincide con el patrón requerido: " #: InvenTree/forms.py:128 msgid "Enter password" -msgstr "Introduzca contraseña" +msgstr "Introduce la contraseña" #: InvenTree/forms.py:129 msgid "Enter new password" -msgstr "Ingrese su nueva contraseña" +msgstr "Introduce una nueva contraseña" #: InvenTree/forms.py:138 msgid "Confirm password" -msgstr "Confirmar la contraseña" +msgstr "Confirma la contraseña" #: InvenTree/forms.py:139 msgid "Confirm new password" -msgstr "Confirmar contraseña nueva" +msgstr "Confirma la nueva contraseña" #: InvenTree/forms.py:143 msgid "Old password" @@ -110,11 +110,11 @@ msgstr "Contraseña anterior" #: InvenTree/forms.py:182 msgid "Email (again)" -msgstr "Email (de nuevo)" +msgstr "Correo electrónico (de nuevo)" #: InvenTree/forms.py:186 msgid "Email address confirmation" -msgstr "Confirmación de dirección de email" +msgstr "Confirmación de correo electrónico" #: InvenTree/forms.py:209 msgid "You must type the same email each time." @@ -122,52 +122,52 @@ msgstr "Debe escribir el mismo correo electrónico cada vez." #: InvenTree/forms.py:253 InvenTree/forms.py:261 msgid "The provided primary email address is not valid." -msgstr "La dirección de correo electrónico principal proporcionada no es válida." +msgstr "La dirección de email principal proporcionada no es válida." #: InvenTree/forms.py:268 msgid "The provided email domain is not approved." -msgstr "El dominio de correo electrónico proporcionado no está aprobado." +msgstr "El dominio de email proporcionado no está aprobado." #: InvenTree/forms.py:395 msgid "Registration is disabled." -msgstr "Registro deshabilitado." +msgstr "El registro ha sido desactivado." -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "Cantidad proporcionada no válida" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "No se ha proporcionado un número de serie" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" -msgstr "Serie duplicada" +msgstr "Número de serie duplicado" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "Rango de grupo inválido: {group}" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "Rango del grupo {group} supera la cantidad permitida ({expected_quantity})" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "Secuencia de grupo inválida: {group}" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" -msgstr "Numeros de serie no encontrados" +msgstr "No se ha encontrado ningún número de serie" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "Los números de serie únicos ({len(serials)}) debe coincidir con la cantidad ({expected_quantity})" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "Eliminar etiquetas HTML de este valor" @@ -203,131 +203,135 @@ msgstr "El servidor remoto devolvió una respuesta vacía" msgid "Supplied URL is not a valid image file" msgstr "La URL proporcionada no es un archivo de imagen válido" -#: InvenTree/locales.py:16 +#: InvenTree/locales.py:18 msgid "Bulgarian" msgstr "Búlgaro" -#: InvenTree/locales.py:17 +#: InvenTree/locales.py:19 msgid "Czech" msgstr "Checo" -#: InvenTree/locales.py:18 +#: InvenTree/locales.py:20 msgid "Danish" msgstr "Danés" -#: InvenTree/locales.py:19 +#: InvenTree/locales.py:21 msgid "German" msgstr "Alemán" -#: InvenTree/locales.py:20 +#: InvenTree/locales.py:22 msgid "Greek" msgstr "Griego" -#: InvenTree/locales.py:21 +#: InvenTree/locales.py:23 msgid "English" msgstr "Inglés" -#: InvenTree/locales.py:22 +#: InvenTree/locales.py:24 msgid "Spanish" msgstr "Español" -#: InvenTree/locales.py:23 +#: InvenTree/locales.py:25 msgid "Spanish (Mexican)" msgstr "Español (México)" -#: InvenTree/locales.py:24 +#: InvenTree/locales.py:26 msgid "Farsi / Persian" -msgstr "Farsi / Persa" +msgstr "Farsi / persa" -#: InvenTree/locales.py:25 +#: InvenTree/locales.py:27 msgid "Finnish" msgstr "Finlandés" -#: InvenTree/locales.py:26 +#: InvenTree/locales.py:28 msgid "French" msgstr "Francés" -#: InvenTree/locales.py:27 +#: InvenTree/locales.py:29 msgid "Hebrew" msgstr "Hebreo" -#: InvenTree/locales.py:28 +#: InvenTree/locales.py:30 msgid "Hindi" -msgstr "Hindi" +msgstr "hindú" -#: InvenTree/locales.py:29 +#: InvenTree/locales.py:31 msgid "Hungarian" msgstr "Húngaro" -#: InvenTree/locales.py:30 +#: InvenTree/locales.py:32 msgid "Italian" msgstr "Italiano" -#: InvenTree/locales.py:31 +#: InvenTree/locales.py:33 msgid "Japanese" msgstr "Japonés" -#: InvenTree/locales.py:32 +#: InvenTree/locales.py:34 msgid "Korean" msgstr "Coreano" -#: InvenTree/locales.py:33 +#: InvenTree/locales.py:35 +msgid "Latvian" +msgstr "" + +#: InvenTree/locales.py:36 msgid "Dutch" msgstr "Holandés" -#: InvenTree/locales.py:34 +#: InvenTree/locales.py:37 msgid "Norwegian" msgstr "Noruego" -#: InvenTree/locales.py:35 +#: InvenTree/locales.py:38 msgid "Polish" msgstr "Polaco" -#: InvenTree/locales.py:36 +#: InvenTree/locales.py:39 msgid "Portuguese" msgstr "Portugués" -#: InvenTree/locales.py:37 +#: InvenTree/locales.py:40 msgid "Portuguese (Brazilian)" -msgstr "Portugués (Brasileño)" +msgstr "Português (Brasil)" -#: InvenTree/locales.py:38 +#: InvenTree/locales.py:41 msgid "Russian" -msgstr "Ruso" +msgstr "Ruso (Русский)" -#: InvenTree/locales.py:39 +#: InvenTree/locales.py:42 msgid "Slovak" msgstr "" -#: InvenTree/locales.py:40 +#: InvenTree/locales.py:43 msgid "Slovenian" msgstr "Esloveno" -#: InvenTree/locales.py:41 +#: InvenTree/locales.py:44 msgid "Serbian" msgstr "Serbio" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:45 msgid "Swedish" -msgstr "Sueco" +msgstr "Svenska" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:46 msgid "Thai" msgstr "Tailandés" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:47 msgid "Turkish" -msgstr "Turco" +msgstr "Türkçe" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:48 msgid "Vietnamese" msgstr "Vietnamita" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:49 msgid "Chinese (Simplified)" msgstr "Chino (Simplificado)" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:50 msgid "Chinese (Traditional)" msgstr "Chino (Tradicional)" @@ -349,15 +353,15 @@ msgstr "" #: InvenTree/models.py:162 msgid "Metadata must be a python dict object" -msgstr "Los metadatos deben ser un objeto diccionario de python" +msgstr "Los metadatos deben ser un objeto de diccionarios de Python" #: InvenTree/models.py:168 msgid "Plugin Metadata" -msgstr "Metadatos del complemento" +msgstr "Metadatos del plugin" #: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" -msgstr "Campo de metadatos JSON, para uso por complementos externos" +msgstr "Campo de metadatos JSON, para uso por plugins externos" #: InvenTree/models.py:399 msgid "Improperly formatted pattern" @@ -369,15 +373,15 @@ msgstr "Clave de formato especificado desconocida" #: InvenTree/models.py:412 msgid "Missing required format key" -msgstr "Falta la clave de formato necesaria" +msgstr "Falta la clave de formato requerida" #: InvenTree/models.py:423 msgid "Reference field cannot be empty" -msgstr "El campo de servidor no puede estar vacío" +msgstr "El campo de referencia no puede estar vacío" #: InvenTree/models.py:431 msgid "Reference must match required pattern" -msgstr "La referencia debe coincidir con la expresión regular {pattern}" +msgstr "La referencia debe coincidir con el patrón requerido" #: InvenTree/models.py:463 msgid "Reference number is too large" @@ -391,7 +395,7 @@ msgstr "Archivo no encontrado" msgid "Missing external link" msgstr "Falta enlace externo" -#: InvenTree/models.py:559 stock/models.py:2446 +#: InvenTree/models.py:559 stock/models.py:2449 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -401,7 +405,7 @@ msgstr "Archivo adjunto" msgid "Select file to attach" msgstr "Seleccionar archivo para adjuntar" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -432,13 +436,13 @@ msgstr "Comentario" msgid "File comment" msgstr "Comentario del archivo" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:3000 users/models.py:100 +#: templates/js/translated/stock.js:3036 users/models.py:100 msgid "User" msgstr "Usuario" @@ -457,7 +461,7 @@ msgstr "Directorio de archivos adjuntos no válido" #: InvenTree/models.py:652 #, python-brace-format msgid "Filename contains illegal character '{c}'" -msgstr "El nombre del archivo contiene el carácter ilegal '{c}'" +msgstr "El nombre del archivo contiene el carácter no válido '{c}'" #: InvenTree/models.py:655 msgid "Filename missing extension" @@ -473,16 +477,16 @@ msgstr "Error al cambiar el nombre del archivo" #: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" -msgstr "Los nombres duplicados no pueden existir bajo el mismo padre" +msgstr "No pueden existir nombres duplicados bajo el mismo padre" #: InvenTree/models.py:864 msgid "Invalid choice" msgstr "Selección no válida" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -495,7 +499,7 @@ msgstr "Selección no válida" #: templates/js/translated/company.js:1155 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Nombre" @@ -506,10 +510,10 @@ msgstr "Nombre" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -523,7 +527,7 @@ msgstr "Nombre" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -531,8 +535,8 @@ msgstr "Nombre" #: templates/js/translated/return_order.js:314 #: templates/js/translated/sales_order.js:802 #: templates/js/translated/sales_order.js:1812 -#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021 -#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "Descripción" @@ -542,24 +546,24 @@ msgstr "Descripción (opcional)" #: InvenTree/models.py:910 msgid "parent" -msgstr "padre" +msgstr "superior" #: InvenTree/models.py:916 templates/js/translated/part.js:2794 -#: templates/js/translated/stock.js:2721 +#: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Ruta" #: InvenTree/models.py:1022 msgid "Markdown notes (optional)" -msgstr "Notas de Markdown (opcional)" +msgstr "Notas de actualización (opcional)" #: InvenTree/models.py:1051 msgid "Barcode Data" -msgstr "Datos de código de barras" +msgstr "Hash del Código de barras" #: InvenTree/models.py:1052 msgid "Third party barcode data" -msgstr "Datos de código de barras de terceros" +msgstr "Datos del código de barras de terceros" #: InvenTree/models.py:1058 msgid "Barcode Hash" @@ -567,7 +571,7 @@ msgstr "Hash del Código de barras" #: InvenTree/models.py:1059 msgid "Unique hash of barcode data" -msgstr "Hash único de datos de código de barras" +msgstr "Hash único de los datos de código de barras" #: InvenTree/models.py:1112 msgid "Existing barcode found" @@ -575,15 +579,15 @@ msgstr "Código de barras existente encontrado" #: InvenTree/models.py:1155 msgid "Server Error" -msgstr "Error de servidor" +msgstr "Error del servidor" #: InvenTree/models.py:1156 msgid "An error has been logged by the server." -msgstr "Se ha registrado un error por el servidor." +msgstr "Un error ha sido registrado por el servidor." -#: InvenTree/serializers.py:62 part/models.py:4134 +#: InvenTree/serializers.py:62 part/models.py:4143 msgid "Must be a valid number" -msgstr "Debe ser un número válido" +msgstr "Debe ser un numero valido" #: InvenTree/serializers.py:99 company/models.py:178 #: company/templates/company/company_base.html:106 part/models.py:2992 @@ -596,95 +600,95 @@ msgstr "Moneda" msgid "Select currency from available options" msgstr "Seleccionar moneda de las opciones disponibles" -#: InvenTree/serializers.py:436 +#: InvenTree/serializers.py:441 msgid "You do not have permission to change this user role." msgstr "No tiene permiso para cambiar este rol de usuario." -#: InvenTree/serializers.py:448 +#: InvenTree/serializers.py:453 msgid "Only superusers can create new users" msgstr "Solo los superusuarios pueden crear nuevos usuarios" -#: InvenTree/serializers.py:467 +#: InvenTree/serializers.py:472 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:469 +#: InvenTree/serializers.py:474 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:476 +#: InvenTree/serializers.py:481 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:537 +#: InvenTree/serializers.py:542 msgid "Filename" -msgstr "Nombre de Archivo" +msgstr "Nombre de archivo" -#: InvenTree/serializers.py:571 +#: InvenTree/serializers.py:576 msgid "Invalid value" msgstr "Valor inválido" -#: InvenTree/serializers.py:591 +#: InvenTree/serializers.py:596 msgid "Data File" msgstr "Archivo de datos" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:597 msgid "Select data file for upload" -msgstr "Seleccione el archivo para subir" +msgstr "Archivo seleccionado para subir" -#: InvenTree/serializers.py:609 +#: InvenTree/serializers.py:614 msgid "Unsupported file type" msgstr "Tipo de archivo no soportado" -#: InvenTree/serializers.py:615 +#: InvenTree/serializers.py:620 msgid "File is too large" msgstr "El archivo es demasiado grande" -#: InvenTree/serializers.py:636 +#: InvenTree/serializers.py:641 msgid "No columns found in file" -msgstr "No hay columnas en el archivo" +msgstr "No se encontraron columnas en el archivo" -#: InvenTree/serializers.py:639 +#: InvenTree/serializers.py:644 msgid "No data rows found in file" msgstr "No hay filas de datos en el archivo" -#: InvenTree/serializers.py:752 +#: InvenTree/serializers.py:757 msgid "No data rows provided" msgstr "No se proporcionaron filas de datos" -#: InvenTree/serializers.py:755 +#: InvenTree/serializers.py:760 msgid "No data columns supplied" -msgstr "No hay columnas de datos proporcionadas" +msgstr "No se proporcionaron columnas de datos" -#: InvenTree/serializers.py:822 +#: InvenTree/serializers.py:827 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Falta la columna requerida: '{name}'" -#: InvenTree/serializers.py:831 +#: InvenTree/serializers.py:836 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Columna duplicada: '{col}'" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:859 msgid "Remote Image" msgstr "Imagen remota" -#: InvenTree/serializers.py:855 +#: InvenTree/serializers.py:860 msgid "URL of remote image file" -msgstr "URL de imagen remota" +msgstr "URL del archivo de imagen remoto" -#: InvenTree/serializers.py:873 +#: InvenTree/serializers.py:878 msgid "Downloading images from remote URL is not enabled" msgstr "La descarga de imágenes desde la URL remota no está habilitada" -#: InvenTree/status.py:66 part/serializers.py:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" -msgstr "Falló la comprobación en segundo plano del worker" +msgstr "Falló la comprobación en segundo plano" #: InvenTree/status.py:70 msgid "Email backend not configured" -msgstr "No se ha configurado el backend de correo" +msgstr "No se ha configurado un servidor de correo electrónico" #: InvenTree/status.py:73 msgid "InvenTree system health checks failed" @@ -706,7 +710,7 @@ msgstr "Colocado" #: order/templates/order/order_base.html:158 #: order/templates/order/sales_order_base.html:161 msgid "Complete" -msgstr "Terminado" +msgstr "Completado" #: InvenTree/status_codes.py:15 InvenTree/status_codes.py:44 #: InvenTree/status_codes.py:150 InvenTree/status_codes.py:170 @@ -716,7 +720,7 @@ msgstr "Cancelado" #: InvenTree/status_codes.py:16 InvenTree/status_codes.py:45 #: InvenTree/status_codes.py:67 msgid "Lost" -msgstr "Perdida" +msgstr "Perdido" #: InvenTree/status_codes.py:17 InvenTree/status_codes.py:46 #: InvenTree/status_codes.py:73 @@ -725,7 +729,7 @@ msgstr "Devuelto" #: InvenTree/status_codes.py:40 InvenTree/status_codes.py:167 msgid "In Progress" -msgstr "En progreso" +msgstr "En curso" #: InvenTree/status_codes.py:43 order/models.py:1552 #: templates/js/translated/sales_order.js:1523 @@ -740,7 +744,7 @@ msgstr "OK" #: InvenTree/status_codes.py:63 msgid "Attention needed" -msgstr "Atención necesaria" +msgstr "Atención requerida" #: InvenTree/status_codes.py:64 msgid "Damaged" @@ -756,7 +760,7 @@ msgstr "Rechazado" #: InvenTree/status_codes.py:70 msgid "Quarantined" -msgstr "En cuarentena" +msgstr "En Cuarentena" #: InvenTree/status_codes.py:91 msgid "Legacy stock tracking entry" @@ -768,7 +772,7 @@ msgstr "Artículo de stock creado" #: InvenTree/status_codes.py:96 msgid "Edited stock item" -msgstr "Artículo de almacén editado" +msgstr "Artículo de stock editado" #: InvenTree/status_codes.py:97 msgid "Assigned serial number" @@ -792,15 +796,15 @@ msgstr "Ubicación cambiada" #: InvenTree/status_codes.py:106 msgid "Stock updated" -msgstr "Existencia actualizada" +msgstr "Stock actualizado" #: InvenTree/status_codes.py:109 msgid "Installed into assembly" -msgstr "Instalado en el ensamblaje" +msgstr "Instalado en el ensamblado" #: InvenTree/status_codes.py:110 msgid "Removed from assembly" -msgstr "Retirado del ensamblaje" +msgstr "Eliminado del ensamblado" #: InvenTree/status_codes.py:112 msgid "Installed component item" @@ -808,39 +812,39 @@ msgstr "Artículo del componente instalado" #: InvenTree/status_codes.py:113 msgid "Removed component item" -msgstr "Elemento de componente eliminado" +msgstr "Artículo de componente eliminado" #: InvenTree/status_codes.py:116 msgid "Split from parent item" -msgstr "Separar del artículo principal" +msgstr "Separar del elemento principal" #: InvenTree/status_codes.py:117 msgid "Split child item" -msgstr "Dividir artículo secundario" +msgstr "Separar elemento secundario" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 msgid "Merged stock items" msgstr "Artículos de stock combinados" #: InvenTree/status_codes.py:123 msgid "Converted to variant" -msgstr "Convertir a variante" +msgstr "Convertido a variante" #: InvenTree/status_codes.py:126 msgid "Build order output created" -msgstr "Trabajo de ensamblaje creado" +msgstr "Orden de ensamblado creada" #: InvenTree/status_codes.py:127 msgid "Build order output completed" -msgstr "Construir orden de salida completado" +msgstr "Orden de ensamblado completada" #: InvenTree/status_codes.py:128 msgid "Build order output rejected" -msgstr "Orden de ensamble rechazada" +msgstr "Orden de fabricación rechazada" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 msgid "Consumed by build order" -msgstr "Consumido por orden de construcción" +msgstr "Consumido por orden de ensamblado" #: InvenTree/status_codes.py:132 msgid "Shipped against Sales Order" @@ -848,7 +852,7 @@ msgstr "Enviado contra orden de venta" #: InvenTree/status_codes.py:135 msgid "Received against Purchase Order" -msgstr "Recibido contra la orden de compra" +msgstr "Recibido contra orden de compra" #: InvenTree/status_codes.py:138 msgid "Returned against Return Order" @@ -856,11 +860,11 @@ msgstr "Devuelto contra orden de devolución" #: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 msgid "Sent to customer" -msgstr "Enviar al cliente" +msgstr "Enviado al cliente" #: InvenTree/status_codes.py:142 msgid "Returned from customer" -msgstr "Devolución del cliente" +msgstr "Devuelto por el cliente" #: InvenTree/status_codes.py:149 msgid "Production" @@ -868,27 +872,27 @@ msgstr "Producción" #: InvenTree/status_codes.py:185 msgid "Return" -msgstr "Devolución" +msgstr "Devolver" #: InvenTree/status_codes.py:188 msgid "Repair" -msgstr "Reparación" +msgstr "Reparar" #: InvenTree/status_codes.py:191 msgid "Replace" -msgstr "Reemplazo" +msgstr "Reemplazar" #: InvenTree/status_codes.py:194 msgid "Refund" -msgstr "Reembolso" +msgstr "Reembolsar" #: InvenTree/status_codes.py:197 msgid "Reject" -msgstr "Rechazo" +msgstr "Rechazar" #: InvenTree/templatetags/inventree_extras.py:183 msgid "Unknown database" -msgstr "Base de datos desconocida" +msgstr "" #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" @@ -916,7 +920,7 @@ msgstr "Editar datos del usuario" #: InvenTree/views.py:412 templates/InvenTree/settings/user.html:20 msgid "Set Password" -msgstr "Configurar contraseña" +msgstr "Configurar Contraseña" #: InvenTree/views.py:434 msgid "Password fields must match" @@ -936,16 +940,16 @@ msgstr "Acerca de InvenTree" #: build/api.py:237 msgid "Build must be cancelled before it can be deleted" -msgstr "La compilación debe cancelarse antes de poder ser eliminada" +msgstr "La construcción debe cancelarse antes de que pueda ser eliminada" -#: build/api.py:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "Consumible" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -960,11 +964,11 @@ msgid "Tracked" msgstr "Rastreado" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" -msgstr "Asignadas" +msgstr "Asignado" #: build/api.py:293 company/models.py:890 #: company/templates/company/supplier_part.html:114 @@ -985,9 +989,9 @@ msgstr "Disponible" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" -msgstr "Construir órden" +msgstr "Petición de Ensamblado" #: build/models.py:75 build/templates/build/build_base.html:13 #: build/templates/build/index.html:8 build/templates/build/index.html:12 @@ -998,7 +1002,7 @@ msgstr "Construir órden" #: templates/InvenTree/settings/sidebar.html:55 #: templates/js/translated/search.js:186 users/models.py:194 msgid "Build Orders" -msgstr "Construir órdenes" +msgstr "Peticiones de Ensamblado" #: build/models.py:116 msgid "Invalid choice for parent build" @@ -1006,15 +1010,15 @@ msgstr "Opción no válida para la construcción padre" #: build/models.py:127 msgid "Build order part cannot be changed" -msgstr "La parte del pedido de construcción no puede ser modificada" +msgstr "" #: build/models.py:173 msgid "Build Order Reference" -msgstr "Número de orden de construcción o armado" +msgstr "Referencia de Orden de Ensamblado" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1030,7 +1034,7 @@ msgstr "Referencia" #: build/models.py:185 msgid "Brief description of the build (optional)" -msgstr "Breve descripción de la construcción (opcional)" +msgstr "Breve descripción de la fabricación (opcional)" #: build/models.py:193 build/templates/build/build_base.html:183 #: build/templates/build/detail.html:87 @@ -1039,16 +1043,16 @@ msgstr "Construcción o Armado Superior" #: build/models.py:194 msgid "BuildOrder to which this build is allocated" -msgstr "Orden de Construcción o Armado a la que se asigna" +msgstr "Construcción de orden a la que se asigna esta versión" #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1059,7 +1063,7 @@ msgstr "Orden de Construcción o Armado a la que se asigna" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:267 stock/serializers.py:689 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1086,11 +1090,11 @@ msgstr "Orden de Construcción o Armado a la que se asigna" #: templates/js/translated/sales_order.js:1598 #: templates/js/translated/sales_order.js:1796 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960 -#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054 -#: templates/js/translated/stock.js:3200 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 msgid "Part" -msgstr "Parte" +msgstr "Pieza" #: build/models.py:207 msgid "Select part to build" @@ -1098,11 +1102,11 @@ msgstr "Seleccionar parte a construir o armar" #: build/models.py:212 msgid "Sales Order Reference" -msgstr "Referencia de orden de venta" +msgstr "Referencia de Pedido de Entrega" #: build/models.py:216 msgid "SalesOrder to which this build is allocated" -msgstr "Orden de Venta a la que se asigna" +msgstr "Pedido de Entrega a la que este ensamblaje se asigna" #: build/models.py:221 build/serializers.py:964 #: templates/js/translated/build.js:1728 @@ -1128,11 +1132,11 @@ msgstr "Cantidad a crear" #: build/models.py:241 msgid "Number of stock items to build" -msgstr "Número de objetos existentes a construir" +msgstr "Número de artículos de stock a ensamblar" #: build/models.py:245 msgid "Completed items" -msgstr "Elementos completados" +msgstr "Artículos completados" #: build/models.py:247 msgid "Number of stock items which have been completed" @@ -1144,17 +1148,17 @@ msgstr "Estado de la construcción" #: build/models.py:255 msgid "Build status code" -msgstr "Código de estado de construcción" +msgstr "Código de estado de la fabricación" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" -msgstr "Numero de lote" +msgstr "Número de lote" #: build/models.py:268 build/serializers.py:281 msgid "Batch code for this build output" -msgstr "Número de lote de este producto final" +msgstr "Número de lote de este producto fabricado" #: build/models.py:271 order/models.py:292 part/models.py:1078 #: part/templates/part/part_base.html:310 @@ -1169,12 +1173,12 @@ msgstr "Fecha límite de finalización" #: build/models.py:276 msgid "Target date for build completion. Build will be overdue after this date." -msgstr "Fecha límite para la finalización de la construcción. La construcción estará vencida después de esta fecha." +msgstr "Fecha límite para la finalización del ensamblado. El ensamblado estará vencido después de esta fecha." #: build/models.py:279 order/models.py:488 order/models.py:2026 #: templates/js/translated/build.js:2245 msgid "Completion Date" -msgstr "Fecha de finalización" +msgstr "Fecha de Finalización" #: build/models.py:285 msgid "completed by" @@ -1205,7 +1209,7 @@ msgstr "Responsable" #: build/models.py:303 msgid "User or group responsible for this build order" -msgstr "Usuario o grupo responsable de esta orden de construcción" +msgstr "Usuario o grupo responsable de esta orden de fabricación" #: build/models.py:308 build/templates/build/detail.html:108 #: company/templates/company/manufacturer_part.html:107 @@ -1217,15 +1221,15 @@ msgstr "Usuario o grupo responsable de esta orden de construcción" #: stock/templates/stock/item_base.html:200 #: templates/js/translated/company.js:1009 msgid "External Link" -msgstr "Link externo" +msgstr "Enlaces Externo" #: build/models.py:313 msgid "Build Priority" -msgstr "Prioridad de construcción" +msgstr "Prioridad de fabricación" #: build/models.py:316 msgid "Priority of this build order" -msgstr "Prioridad de esta orden de construcción" +msgstr "Prioridad de esta orden de fabricación" #: build/models.py:323 common/models.py:129 order/admin.py:18 #: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146 @@ -1236,59 +1240,59 @@ msgstr "Prioridad de esta orden de construcción" #: templates/js/translated/table_filters.js:48 #: templates/project_code_data.html:6 msgid "Project Code" -msgstr "Código del proyecto" +msgstr "Código de proyecto" #: build/models.py:324 msgid "Project code for this build order" -msgstr "Código de proyecto para esta orden de ensamble" +msgstr "Código del proyecto para esta orden de fabricación" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" -msgstr "El pedido {build} ha sido procesado" +msgstr "La orden de fabricación {build} ha sido completada" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" -msgstr "Pedido #[order] ha sido procesado" +msgstr "Una orden de fabricación se ha completado" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" -msgstr "No se ha especificado salida de construcción" +msgstr "No se ha especificado salida de fabricación" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" -msgstr "La construcción de la salida ya está completa" +msgstr "" -#: build/models.py:789 +#: build/models.py:805 msgid "Build output does not match Build Order" -msgstr "La salida de la construcción no coincide con el orden de construcción" +msgstr "" -#: build/models.py:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 msgid "Quantity must be greater than zero" -msgstr "La cantidad debe ser mayor que cero" +msgstr "" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 msgid "Quantity cannot be greater than the output quantity" -msgstr "La cantidad no puede ser mayor que la cantidad de salida" +msgstr "" -#: build/models.py:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" -msgstr "Ensamblar equipo" +msgstr "" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1298,7 +1302,7 @@ msgstr "Ensamblar equipo" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:463 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1310,7 +1314,7 @@ msgstr "Ensamblar equipo" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1325,43 +1329,43 @@ msgstr "Ensamblar equipo" #: templates/js/translated/sales_order.js:1698 #: templates/js/translated/sales_order.js:1824 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 -#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985 -#: templates/js/translated/stock.js:3068 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "Cantidad" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" -msgstr "Cantidad requerida para orden de ensamble" +msgstr "" -#: build/models.py:1381 +#: build/models.py:1397 msgid "Build item must specify a build output, as master part is marked as trackable" -msgstr "Item de construcción o armado debe especificar un resultado o salida, ya que la parte maestra está marcada como rastreable" +msgstr "" -#: build/models.py:1390 +#: build/models.py:1406 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" -msgstr "Cantidad asignada ({q}) no debe exceder la cantidad disponible de stock ({a})" +msgstr "" -#: build/models.py:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "Artículo de stock sobreasignado" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "Cantidad asignada debe ser mayor que cero" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "La cantidad debe ser 1 para el stock serializado" -#: build/models.py:1473 +#: build/models.py:1489 msgid "Selected stock item does not match BOM line" -msgstr "El artículo de almacén selelccionado no coincide con la línea BOM" +msgstr "" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 @@ -1372,61 +1376,61 @@ msgstr "El artículo de almacén selelccionado no coincide con la línea BOM" #: templates/js/translated/sales_order.js:1605 #: templates/js/translated/sales_order.js:1692 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 -#: templates/js/translated/stock.js:2941 +#: templates/js/translated/stock.js:2977 msgid "Stock Item" -msgstr "Artículo de stock" +msgstr "" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" -msgstr "Producto original de stock" +msgstr "" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "Cantidad de stock a asignar para construir" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "Instalar en" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "Artículo de stock de destino" #: build/serializers.py:160 build/serializers.py:840 #: templates/js/translated/build.js:1319 msgid "Build Output" -msgstr "Resultado de la construcción o armado" +msgstr "" #: build/serializers.py:172 msgid "Build output does not match the parent build" -msgstr "La salida de construcción no coincide con la construcción padre" +msgstr "" #: build/serializers.py:176 msgid "Output part does not match BuildOrder part" -msgstr "La parte de salida no coincide con la parte de la Orden de Construcción" +msgstr "" #: build/serializers.py:180 msgid "This build output has already been completed" -msgstr "Esta salida de construcción ya ha sido completada" +msgstr "" #: build/serializers.py:191 msgid "This build output is not fully allocated" -msgstr "Esta salida de construcción no está completamente asignada" +msgstr "" #: build/serializers.py:211 build/serializers.py:248 msgid "Enter quantity for build output" -msgstr "Ingrese la cantidad para la producción de la construcción" +msgstr "" #: build/serializers.py:269 msgid "Integer quantity required for trackable parts" -msgstr "Cantidad entera requerida para partes rastreables" +msgstr "" #: build/serializers.py:272 msgid "Integer quantity required, as the bill of materials contains trackable parts" -msgstr "Cantidad entera requerida, ya que la factura de materiales contiene partes rastreables" +msgstr "" -#: build/serializers.py:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Números de serie" @@ -1441,20 +1445,20 @@ msgstr "Autoasignar Números de Serie" #: build/serializers.py:302 msgid "Automatically allocate required items with matching serial numbers" -msgstr "Asignar automáticamente los artículos requeridos con números de serie coincidentes" +msgstr "" #: build/serializers.py:337 stock/api.py:978 msgid "The following serial numbers already exist or are invalid" -msgstr "Los siguientes números seriales ya existen o son inválidos" +msgstr "" #: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539 msgid "A list of build outputs must be provided" -msgstr "Debe proporcionarse una lista de salidas de construcción" +msgstr "" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1466,69 +1470,69 @@ msgstr "Debe proporcionarse una lista de salidas de construcción" #: templates/js/translated/sales_order.js:1627 #: templates/js/translated/sales_order.js:1706 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164 -#: templates/js/translated/stock.js:2835 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 msgid "Location" msgstr "Ubicación" #: build/serializers.py:427 msgid "Stock location for scrapped outputs" -msgstr "Ubicación de almacén para salidas descartadas" +msgstr "" #: build/serializers.py:433 msgid "Discard Allocations" -msgstr "Descartar asignaciones" +msgstr "" #: build/serializers.py:434 msgid "Discard any stock allocations for scrapped outputs" -msgstr "Descartar cualquier asignación de existencias para las salidas descartadas" +msgstr "" #: build/serializers.py:439 msgid "Reason for scrapping build output(s)" -msgstr "Razón para descartar la salida de ensamble(s)" +msgstr "" #: build/serializers.py:499 msgid "Location for completed build outputs" -msgstr "Ubicación para las salidas de construcción completadas" +msgstr "" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 #: templates/js/translated/purchase_order.js:1723 #: templates/js/translated/return_order.js:331 #: templates/js/translated/sales_order.js:819 -#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959 -#: templates/js/translated/stock.js:3084 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 msgid "Status" msgstr "Estado" #: build/serializers.py:511 msgid "Accept Incomplete Allocation" -msgstr "Aceptar Asignación Incompleta" +msgstr "" #: build/serializers.py:512 msgid "Complete outputs if stock has not been fully allocated" -msgstr "Completar salidas si el inventario no se ha asignado completamente" +msgstr "" #: build/serializers.py:592 msgid "Remove Allocated Stock" -msgstr "Quitar inventario asignado" +msgstr "" #: build/serializers.py:593 msgid "Subtract any stock which has already been allocated to this build" -msgstr "Resta cualquier existencia que ya ha sido asignado a esta versión" +msgstr "" #: build/serializers.py:599 msgid "Remove Incomplete Outputs" -msgstr "Eliminar salidas incompletas" +msgstr "" #: build/serializers.py:600 msgid "Delete any build outputs which have not been completed" -msgstr "Eliminar cualquier salida de construcción que no se haya completado" +msgstr "" #: build/serializers.py:627 msgid "Not permitted" @@ -1536,23 +1540,23 @@ msgstr "No permitido" #: build/serializers.py:628 msgid "Accept as consumed by this build order" -msgstr "Aceptar como consumido por este pedido de construcción" +msgstr "" #: build/serializers.py:629 msgid "Deallocate before completing this build order" -msgstr "Liberar antes de completar esta orden de construcción" +msgstr "" #: build/serializers.py:651 msgid "Overallocated Stock" -msgstr "Stock sobreasignado" +msgstr "Existencias sobreasignadas" #: build/serializers.py:653 msgid "How do you want to handle extra stock items assigned to the build order" -msgstr "Cómo quieres manejar los artículos extra de inventario asignados a la orden de construcción" +msgstr "Cómo quieres manejar los artículos extra de stock asignados a la orden de ensamblado" #: build/serializers.py:663 msgid "Some stock items have been overallocated" -msgstr "Algunos artículos de inventario han sido sobreasignados" +msgstr "Algunos artículos de stock han sido sobreasignados" #: build/serializers.py:668 msgid "Accept Unallocated" @@ -1566,9 +1570,9 @@ msgstr "Aceptar que los artículos de stock no se han asignado completamente a e msgid "Required stock has not been fully allocated" msgstr "El stock requerido no ha sido completamente asignado" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" -msgstr "Aceptar incompleto" +msgstr "Acepta incompleto" #: build/serializers.py:685 msgid "Accept that the required number of build outputs have not been completed" @@ -1576,56 +1580,56 @@ msgstr "Aceptar que el número requerido de salidas de construcción no se han c #: build/serializers.py:695 templates/js/translated/build.js:319 msgid "Required build quantity has not been completed" -msgstr "La cantidad de construcción requerida aún no se ha completado" +msgstr "" #: build/serializers.py:704 templates/js/translated/build.js:303 msgid "Build order has incomplete outputs" -msgstr "El orden de construcción tiene salidas incompletas" +msgstr "" #: build/serializers.py:734 msgid "Build Line" -msgstr "Linea de ensamble" +msgstr "" #: build/serializers.py:744 msgid "Build output" -msgstr "Resultado de la construcción o armado" +msgstr "" #: build/serializers.py:752 msgid "Build output must point to the same build" -msgstr "La salida de la construcción debe apuntar a la misma construcción" +msgstr "" #: build/serializers.py:788 msgid "Build Line Item" -msgstr "Crear partida" +msgstr "" #: build/serializers.py:802 msgid "bom_item.part must point to the same part as the build order" -msgstr "bom_item.part debe apuntar a la misma parte que la orden de construcción" +msgstr "" -#: build/serializers.py:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1065 msgid "Item must be in stock" msgstr "El artículo debe estar en stock" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Cantidad disponible ({q}) excedida" #: build/serializers.py:871 msgid "Build output must be specified for allocation of tracked parts" -msgstr "La salida de la construcción debe especificarse para la asignación de partes rastreadas" +msgstr "" #: build/serializers.py:878 msgid "Build output cannot be specified for allocation of untracked parts" -msgstr "La salida de construcción no se puede especificar para la asignación de partes no rastreadas" +msgstr "" -#: build/serializers.py:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" -msgstr "Debe proporcionarse la adjudicación de artículos" +msgstr "" #: build/serializers.py:965 msgid "Stock location where parts are to be sourced (leave blank to take from any location)" -msgstr "Ubicación de inventario donde las partes deben ser obtenidas (dejar en blanco para tomar de cualquier ubicación)" +msgstr "Ubicación de stock donde las piezas deben ser obtenidas (dejar en blanco para tomar de cualquier ubicación)" #: build/serializers.py:973 msgid "Exclude Location" @@ -1633,77 +1637,78 @@ msgstr "Excluir ubicación" #: build/serializers.py:974 msgid "Exclude stock items from this selected location" -msgstr "Excluir artículos de stock de esta ubicación seleccionada" +msgstr "" #: build/serializers.py:979 msgid "Interchangeable Stock" -msgstr "Stock intercambiable" +msgstr "" #: build/serializers.py:980 msgid "Stock items in multiple locations can be used interchangeably" -msgstr "Los artículos de inventario en múltiples ubicaciones se pueden utilizar de forma intercambiable" +msgstr "" #: build/serializers.py:985 msgid "Substitute Stock" -msgstr "Sustituir stock" +msgstr "" #: build/serializers.py:986 msgid "Allow allocation of substitute parts" -msgstr "Permitir la asignación de partes sustitutas" +msgstr "" #: build/serializers.py:991 msgid "Optional Items" -msgstr "Elementos opcionales" +msgstr "" #: build/serializers.py:992 msgid "Allocate optional BOM items to build order" -msgstr "Asignar artículos de la BOM opcionales para construir la orden" +msgstr "" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 #: stock/api.py:745 msgid "BOM Item" -msgstr "Item de Lista de Materiales" +msgstr "" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" -msgstr "En pedido" +msgstr "" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "Stock Disponible" -#: build/tasks.py:149 -msgid "Stock required for build order" -msgstr "Stock requerido para la orden de construcción" - -#: build/tasks.py:166 -msgid "Overdue Build Order" -msgstr "Orden de construcción atrasada" - #: build/tasks.py:171 +msgid "Stock required for build order" +msgstr "" + +#: build/tasks.py:188 +msgid "Overdue Build Order" +msgstr "" + +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" -msgstr "El pedido de construcción {bo} está atrasado" +msgstr "" #: build/templates/build/build_base.html:18 msgid "Part thumbnail" -msgstr "Miniatura de parte" +msgstr "" #: build/templates/build/build_base.html:38 #: company/templates/company/supplier_part.html:35 @@ -1715,7 +1720,7 @@ msgstr "Miniatura de parte" #: stock/templates/stock/location.html:55 #: templates/js/translated/filters.js:335 msgid "Barcode actions" -msgstr "Acciones para código de barras" +msgstr "" #: build/templates/build/build_base.html:42 #: company/templates/company/supplier_part.html:39 @@ -1739,7 +1744,7 @@ msgstr "Mostrar código QR" #: templates/js/translated/barcode.js:496 #: templates/js/translated/barcode.js:501 msgid "Unlink Barcode" -msgstr "Desvincular Código de Barras" +msgstr "" #: build/templates/build/build_base.html:47 #: company/templates/company/supplier_part.html:43 @@ -1750,67 +1755,67 @@ msgstr "Desvincular Código de Barras" #: stock/templates/stock/item_base.html:49 #: stock/templates/stock/location.html:61 msgid "Link Barcode" -msgstr "Vincular Código de Barras" +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 "Imprimir acciones" +msgstr "Acciones de impresión" #: build/templates/build/build_base.html:60 msgid "Print build order report" -msgstr "Imprimir informe de orden de construcción" +msgstr "Imprimir informe de orden de fabricación" #: build/templates/build/build_base.html:67 msgid "Build actions" -msgstr "Acciones de construcción o armado" +msgstr "Acciones de fabricación" #: build/templates/build/build_base.html:71 msgid "Edit Build" -msgstr "Editar construcción o armado" +msgstr "Editar fabricación" #: build/templates/build/build_base.html:73 msgid "Cancel Build" -msgstr "Cancelar construcción o armado" +msgstr "" #: build/templates/build/build_base.html:76 msgid "Duplicate Build" -msgstr "Construcción duplicada" +msgstr "" #: build/templates/build/build_base.html:79 msgid "Delete Build" -msgstr "Eliminar construcción o armado" +msgstr "" #: build/templates/build/build_base.html:84 #: build/templates/build/build_base.html:85 msgid "Complete Build" -msgstr "Completar construcción" +msgstr "" #: build/templates/build/build_base.html:107 msgid "Build Description" -msgstr "Descripción de Construcción" +msgstr "Descripción de Ensamblado" #: build/templates/build/build_base.html:117 msgid "No build outputs have been created for this build order" -msgstr "No se han creado salidas para esta orden de construcción" +msgstr "" #: build/templates/build/build_base.html:124 msgid "Build Order is ready to mark as completed" -msgstr "Orden de construcción está lista para marcar como completada" +msgstr "" #: build/templates/build/build_base.html:129 msgid "Build Order cannot be completed as outstanding outputs remain" -msgstr "La orden de construcción no se puede completar ya que existen salidas pendientes" +msgstr "" #: build/templates/build/build_base.html:134 msgid "Required build quantity has not yet been completed" -msgstr "La cantidad de construcción requerida aún no se ha completado" +msgstr "" #: build/templates/build/build_base.html:139 msgid "Stock has not been fully allocated to this Build Order" -msgstr "Stock no ha sido asignado completamente a este pedido de construcción" +msgstr "" #: build/templates/build/build_base.html:160 #: build/templates/build/detail.html:138 order/models.py:285 @@ -1826,12 +1831,12 @@ msgstr "Stock no ha sido asignado completamente a este pedido de construcción" #: templates/js/translated/sales_order.js:835 #: templates/js/translated/sales_order.js:1867 msgid "Target Date" -msgstr "Fecha objetivo" +msgstr "Fecha Límite" #: build/templates/build/build_base.html:165 #, python-format msgid "This build was due on %(target)s" -msgstr "Esta construcción vence el %(target)s" +msgstr "" #: build/templates/build/build_base.html:165 #: build/templates/build/build_base.html:222 @@ -1848,7 +1853,7 @@ msgstr "Vencido" #: build/templates/build/build_base.html:177 #: build/templates/build/detail.html:67 build/templates/build/sidebar.html:13 msgid "Completed Outputs" -msgstr "Salidas completadas" +msgstr "" #: build/templates/build/build_base.html:190 #: build/templates/build/detail.html:101 order/api.py:1457 order/models.py:1524 @@ -1862,21 +1867,21 @@ msgstr "Salidas completadas" #: templates/js/translated/pricing.js:929 #: templates/js/translated/sales_order.js:769 #: templates/js/translated/sales_order.js:992 -#: templates/js/translated/stock.js:2888 +#: templates/js/translated/stock.js:2924 msgid "Sales Order" -msgstr "Orden de Venta" +msgstr "Pedido de Entrega" #: build/templates/build/build_base.html:197 #: build/templates/build/detail.html:115 #: report/templates/report/inventree_build_order_base.html:152 #: templates/js/translated/table_filters.js:24 msgid "Issued By" -msgstr "Emitido por" +msgstr "" #: build/templates/build/build_base.html:211 #: build/templates/build/detail.html:94 templates/js/translated/build.js:2154 msgid "Priority" -msgstr "Prioridad" +msgstr "" #: build/templates/build/build_base.html:273 msgid "Delete Build Order" @@ -1892,40 +1897,40 @@ msgstr "" #: build/templates/build/detail.html:15 msgid "Build Details" -msgstr "Detalles de Trabajo" +msgstr "" #: build/templates/build/detail.html:38 msgid "Stock Source" -msgstr "Fuente de stock" +msgstr "" #: build/templates/build/detail.html:43 msgid "Stock can be taken from any available location." -msgstr "Las existencias se pueden tomar desde cualquier ubicación disponible." +msgstr "" #: build/templates/build/detail.html:49 order/models.py:1418 #: templates/js/translated/purchase_order.js:2190 msgid "Destination" -msgstr "Destinación" +msgstr "" #: build/templates/build/detail.html:56 msgid "Destination location not specified" -msgstr "Se requiere ubicación de destino" +msgstr "" #: build/templates/build/detail.html:73 msgid "Allocated Parts" -msgstr "Partes asignadas" +msgstr "" #: build/templates/build/detail.html:80 stock/admin.py:163 #: stock/templates/stock/item_base.html:162 #: templates/js/translated/build.js:1377 #: templates/js/translated/model_renderers.js:235 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153 -#: templates/js/translated/stock.js:3091 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" -msgstr "Lote" +msgstr "" #: build/templates/build/detail.html:133 #: order/templates/order/order_base.html:173 @@ -1937,80 +1942,84 @@ msgstr "Creado" #: build/templates/build/detail.html:144 msgid "No target date set" -msgstr "Sin fecha objetivo" +msgstr "Sin fecha límite" #: build/templates/build/detail.html:149 #: order/templates/order/sales_order_base.html:202 #: templates/js/translated/table_filters.js:689 msgid "Completed" -msgstr "Completados" +msgstr "Completado" #: build/templates/build/detail.html:153 msgid "Build not complete" -msgstr "Trabajo incompleto" +msgstr "" #: build/templates/build/detail.html:164 build/templates/build/sidebar.html:17 msgid "Child Build Orders" -msgstr "Órdenes de Trabajo herederas" +msgstr "" #: build/templates/build/detail.html:177 msgid "Allocate Stock to Build" -msgstr "Asignar Stock a Trabajo" +msgstr "" #: build/templates/build/detail.html:181 msgid "Deallocate stock" -msgstr "Desasignar existencias" +msgstr "" #: build/templates/build/detail.html:182 msgid "Deallocate Stock" -msgstr "Desasignar existencias" +msgstr "" #: build/templates/build/detail.html:184 msgid "Automatically allocate stock to build" -msgstr "Asignar existencias automáticamente a contrucción" +msgstr "" #: build/templates/build/detail.html:185 msgid "Auto Allocate" -msgstr "Auto asignar" +msgstr "" #: build/templates/build/detail.html:187 msgid "Manually allocate stock to build" -msgstr "Asignar existencias manualmente a construcción" +msgstr "" #: build/templates/build/detail.html:188 build/templates/build/sidebar.html:8 msgid "Allocate Stock" -msgstr "Asignar stock" +msgstr "" #: build/templates/build/detail.html:191 msgid "Order required parts" -msgstr "Pedir partes necesarias" +msgstr "" #: build/templates/build/detail.html:192 #: templates/js/translated/purchase_order.js:795 msgid "Order Parts" -msgstr "Partes del pedido" +msgstr "Pedir Piezas" -#: build/templates/build/detail.html:210 -msgid "Incomplete Build Outputs" -msgstr "Salidas de Trabajo incompletas" - -#: build/templates/build/detail.html:214 -msgid "Create new build output" -msgstr "Crear nueva salida de trabajo" +#: 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 "Nueva Salida de Trabajo" +msgstr "" -#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" -msgstr "Existencias consumidas" +msgstr "" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" -msgstr "Salidas de Trabajo Completadas" +msgstr "" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2024,77 +2033,77 @@ msgstr "Salidas de Trabajo Completadas" #: part/templates/part/part_sidebar.html:61 stock/templates/stock/item.html:110 #: stock/templates/stock/stock_sidebar.html:23 msgid "Attachments" -msgstr "Adjuntos" +msgstr "Archivos adjuntos" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" -msgstr "Notas del Trabajo" +msgstr "" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 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 "Nueva Orden de Trabajo" +msgstr "" #: build/templates/build/sidebar.html:5 msgid "Build Order Details" -msgstr "Configuración de Pedido de Trabajo" +msgstr "" #: build/templates/build/sidebar.html:10 msgid "Incomplete Outputs" -msgstr "Salidas incompletas" +msgstr "" #: common/files.py:63 #, python-brace-format msgid "Unsupported file format: {fmt}" -msgstr "Formato de archivo no soportado: {fmt}" +msgstr "" #: common/files.py:65 msgid "Error reading file (invalid encoding)" -msgstr "Error al leer el archivo (codificación inválida)" +msgstr "" #: common/files.py:70 msgid "Error reading file (invalid format)" -msgstr "Error al leer el archivo (formato no válido)" +msgstr "" #: common/files.py:72 msgid "Error reading file (incorrect dimension)" -msgstr "Error leyendo el archivo (dimensión incorrecta)" +msgstr "" #: common/files.py:74 msgid "Error reading file (data could be corrupted)" -msgstr "Error al leer el archivo (los datos podrían estar corruptos)" +msgstr "" #: common/forms.py:12 msgid "File" -msgstr "Archivo" +msgstr "" #: common/forms.py:12 msgid "Select file to upload" -msgstr "Seleccione el archivo a cargar" +msgstr "" #: common/forms.py:25 msgid "{name.title()} File" -msgstr "Archivo {name.title()}" +msgstr "" #: common/forms.py:26 #, python-brace-format msgid "Select {name} file to upload" -msgstr "Seleccione el archivo {name} para subir" +msgstr "" #: common/models.py:71 msgid "Updated" -msgstr "Actualizado" +msgstr "" #: common/models.py:72 msgid "Timestamp of last update" -msgstr "Fecha y hora de la última actualización" +msgstr "" #: common/models.py:105 msgid "Site URL is locked by configuration" @@ -2102,1400 +2111,1424 @@ msgstr "" #: common/models.py:130 msgid "Unique project code" -msgstr "Código único del proyecto" +msgstr "" #: common/models.py:137 msgid "Project description" -msgstr "Descripción del proyecto" +msgstr "" #: common/models.py:146 msgid "User or group responsible for this project" -msgstr "Usuario o grupo responsable de este projecto" +msgstr "" -#: common/models.py:737 +#: common/models.py:744 msgid "Settings key (must be unique - case insensitive)" -msgstr "Clave de configuración (debe ser única - mayúsculas y minúsculas)" +msgstr "" -#: common/models.py:741 +#: common/models.py:748 msgid "Settings value" -msgstr "Valor de ajuste" +msgstr "" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" -msgstr "El valor elegido no es una opción válida" +msgstr "" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" -msgstr "El valor debe ser un valor booleano" +msgstr "" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" -msgstr "El valor debe ser un entero" +msgstr "" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" -msgstr "Cadena de clave debe ser única" +msgstr "" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" -msgstr "Sin grupo" +msgstr "" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." -msgstr "Un dominio vacío no está permitido." +msgstr "" -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" -msgstr "Nombre de dominio inválido: {domain}" +msgstr "" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" -msgstr "Sin plugin" +msgstr "" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" -msgstr "Reinicio requerido" - -#: common/models.py:1231 -msgid "A setting has been changed which requires a server restart" -msgstr "Se ha cambiado una configuración que requiere un reinicio del servidor" +msgstr "" #: common/models.py:1238 +msgid "A setting has been changed which requires a server restart" +msgstr "" + +#: common/models.py:1245 msgid "Pending migrations" -msgstr "Migraciones pendientes" - -#: common/models.py:1239 -msgid "Number of pending database migrations" -msgstr "Número de migraciones de base de datos pendientes" - -#: common/models.py:1244 -msgid "Server Instance Name" -msgstr "Nombre de la instancia del servidor" +msgstr "" #: common/models.py:1246 -msgid "String descriptor for the server instance" -msgstr "Descriptor de cadena para la instancia del servidor" - -#: common/models.py:1250 -msgid "Use instance name" -msgstr "Usar nombre de instancia" +msgid "Number of pending database migrations" +msgstr "" #: common/models.py:1251 -msgid "Use the instance name in the title-bar" -msgstr "Utilice el nombre de la instancia en la barra de título" +msgid "Server Instance Name" +msgstr "" -#: common/models.py:1256 +#: common/models.py:1253 +msgid "String descriptor for the server instance" +msgstr "" + +#: common/models.py:1257 +msgid "Use instance name" +msgstr "" + +#: common/models.py:1258 +msgid "Use the instance name in the title-bar" +msgstr "" + +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "Restringir mostrar 'acerca de'" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" -msgstr "Mostrar la modal `about` solo para superusuarios" +msgstr "" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "Nombre de empresa" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "Nombre interno de empresa" -#: common/models.py:1267 -msgid "Base URL" -msgstr "URL Base" - -#: common/models.py:1268 -msgid "Base URL for server instance" -msgstr "URL base para la instancia del servidor" - #: common/models.py:1274 -msgid "Default Currency" -msgstr "Moneda predeterminada" +msgid "Base URL" +msgstr "" #: common/models.py:1275 -msgid "Select base currency for pricing calculations" -msgstr "Seleccione la moneda base para los cálculos de precios" +msgid "Base URL for server instance" +msgstr "" #: common/models.py:1281 +msgid "Default Currency" +msgstr "Moneda Predeterminada" + +#: common/models.py:1282 +msgid "Select base currency for pricing calculations" +msgstr "" + +#: common/models.py:1288 msgid "Currency Update Interval" -msgstr "Intervalo de actualización de moneda" +msgstr "" -#: common/models.py:1283 +#: common/models.py:1290 msgid "How often to update exchange rates (set to zero to disable)" -msgstr "Con qué frecuencia actualizar los tipos de cambio (establecer a cero para desactivar)" +msgstr "" -#: common/models.py:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "días" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" -msgstr "Plugin de Actualización de Moneda" - -#: common/models.py:1291 -msgid "Currency update plugin to use" -msgstr "Plugin de actualización de moneda a usar" - -#: common/models.py:1296 -msgid "Download from URL" -msgstr "Descargar desde URL" +msgstr "" #: common/models.py:1298 -msgid "Allow download of remote images and files from external URL" -msgstr "Permitir la descarga de imágenes y archivos remotos desde la URL externa" +msgid "Currency update plugin to use" +msgstr "" -#: common/models.py:1304 -msgid "Download Size Limit" -msgstr "Límite de tamaño de descarga" +#: common/models.py:1303 +msgid "Download from URL" +msgstr "" #: common/models.py:1305 -msgid "Maximum allowable download size for remote image" -msgstr "Tamaño máximo de descarga permitido para la imagen remota" +msgid "Allow download of remote images and files from external URL" +msgstr "" #: common/models.py:1311 -msgid "User-agent used to download from URL" -msgstr "Agente de usuario usado para descargar desde la URL" +msgid "Download Size Limit" +msgstr "" -#: common/models.py:1313 -msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" -msgstr "Permitir reemplazar el agente de usuario utilizado para descargar imágenes y archivos desde URL externa (dejar en blanco para el valor predeterminado)" +#: common/models.py:1312 +msgid "Maximum allowable download size for remote image" +msgstr "" #: common/models.py:1318 -msgid "Strict URL Validation" -msgstr "Validación estricta de URL" +msgid "User-agent used to download from URL" +msgstr "" -#: common/models.py:1319 -msgid "Require schema specification when validating URLs" -msgstr "Requerir especificación de esquema al validar URLs" - -#: common/models.py:1324 -msgid "Require confirm" -msgstr "Requiere confirmación" +#: common/models.py:1320 +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:1325 -msgid "Require explicit user confirmation for certain action." -msgstr "Requiere confirmación explícita del usuario para ciertas acciones." +msgid "Strict URL Validation" +msgstr "" -#: common/models.py:1330 -msgid "Tree Depth" -msgstr "Profundidad del árbol" +#: common/models.py:1326 +msgid "Require schema specification when validating URLs" +msgstr "" + +#: common/models.py:1331 +msgid "Require confirm" +msgstr "" #: common/models.py:1332 -msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." -msgstr "Profundidad de árbol predeterminada para treeview. Los niveles más profundos pueden ser cargados perezosamente a medida que son necesarios." +msgid "Require explicit user confirmation for certain action." +msgstr "" -#: common/models.py:1338 -msgid "Update Check Interval" -msgstr "Actualizar intervalo de actualización" +#: common/models.py:1337 +msgid "Tree Depth" +msgstr "" #: common/models.py:1339 -msgid "How often to check for updates (set to zero to disable)" -msgstr "Con qué frecuencia comprobar actualizaciones (establecer a cero para desactivar)" +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." +msgstr "" #: common/models.py:1345 -msgid "Automatic Backup" -msgstr "Copia de seguridad automática" +msgid "Update Check Interval" +msgstr "" #: common/models.py:1346 -msgid "Enable automatic backup of database and media files" -msgstr "Activar copia de seguridad automática de los archivos de base de datos y medios" - -#: common/models.py:1351 -msgid "Auto Backup Interval" -msgstr "Intervalo de respaldo automático" +msgid "How often to check for updates (set to zero to disable)" +msgstr "" #: common/models.py:1352 -msgid "Specify number of days between automated backup events" -msgstr "Especificar número de días entre eventos automatizados de copia de seguridad" +msgid "Automatic Backup" +msgstr "" + +#: common/models.py:1353 +msgid "Enable automatic backup of database and media files" +msgstr "" #: common/models.py:1358 -msgid "Task Deletion Interval" -msgstr "Intervalo de eliminación de tareas" +msgid "Auto Backup Interval" +msgstr "" -#: common/models.py:1360 -msgid "Background task results will be deleted after specified number of days" -msgstr "Los resultados de las tareas en segundo plano se eliminarán después del número especificado de días" +#: common/models.py:1359 +msgid "Specify number of days between automated backup events" +msgstr "" + +#: common/models.py:1365 +msgid "Task Deletion Interval" +msgstr "" #: common/models.py:1367 -msgid "Error Log Deletion Interval" -msgstr "Intervalo de eliminación de registro de errores" +msgid "Background task results will be deleted after specified number of days" +msgstr "" -#: common/models.py:1369 -msgid "Error logs will be deleted after specified number of days" -msgstr "Los registros de errores se eliminarán después del número especificado de días" +#: common/models.py:1374 +msgid "Error Log Deletion Interval" +msgstr "" #: common/models.py:1376 +msgid "Error logs will be deleted after specified number of days" +msgstr "" + +#: common/models.py:1383 msgid "Notification Deletion Interval" -msgstr "Intervalo de eliminación de notificaciones" +msgstr "" -#: common/models.py:1378 +#: common/models.py:1385 msgid "User notifications will be deleted after specified number of days" -msgstr "Las notificaciones de usuario se eliminarán después del número especificado de días" +msgstr "" -#: common/models.py:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" -msgstr "Soporte de código de barras" +msgstr "Códigos de barras" -#: common/models.py:1386 +#: common/models.py:1393 msgid "Enable barcode scanner support in the web interface" -msgstr "Habilitar el soporte para escáner de códigos de barras en la interfaz web" +msgstr "" -#: common/models.py:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" -msgstr "Retraso de entrada de código de barras" +msgstr "Retraso de entrada" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "Tiempo de retraso en la lectura de códigos de barras" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" -msgstr "Soporte para Webcam de código de barras" +msgstr "Soporte para cámaras web" -#: common/models.py:1399 +#: common/models.py:1406 msgid "Allow barcode scanning via webcam in browser" msgstr "Permitir escaneo de código de barras a través de webcam en el navegador" -#: common/models.py:1404 -msgid "Part Revisions" -msgstr "Revisiones de partes" - -#: common/models.py:1405 -msgid "Enable revision field for Part" -msgstr "Habilitar campo de revisión para parte" - -#: common/models.py:1410 -msgid "IPN Regex" -msgstr "Regex IPN" - #: common/models.py:1411 +msgid "Part Revisions" +msgstr "" + +#: common/models.py:1412 +msgid "Enable revision field for Part" +msgstr "" + +#: common/models.py:1417 +msgid "IPN Regex" +msgstr "" + +#: common/models.py:1418 msgid "Regular expression pattern for matching Part IPN" -msgstr "Patrón de expresión regular para IPN de la parte coincidente" - -#: common/models.py:1414 -msgid "Allow Duplicate IPN" -msgstr "Permitir IPN duplicado" - -#: common/models.py:1415 -msgid "Allow multiple parts to share the same IPN" -msgstr "Permitir que varias partes compartan el mismo IPN" - -#: common/models.py:1420 -msgid "Allow Editing IPN" -msgstr "Permitir editar IPN" +msgstr "" #: common/models.py:1421 -msgid "Allow changing the IPN value while editing a part" -msgstr "Permite cambiar el valor de IPN mientras se edita una parte" +msgid "Allow Duplicate IPN" +msgstr "" -#: common/models.py:1426 -msgid "Copy Part BOM Data" -msgstr "Copiar parte de datos BOM" +#: common/models.py:1422 +msgid "Allow multiple parts to share the same IPN" +msgstr "" #: common/models.py:1427 -msgid "Copy BOM data by default when duplicating a part" -msgstr "Copiar datos BOM por defecto al duplicar una parte" +msgid "Allow Editing IPN" +msgstr "" -#: common/models.py:1432 -msgid "Copy Part Parameter Data" -msgstr "Copiar parámetros de parte" +#: common/models.py:1428 +msgid "Allow changing the IPN value while editing a part" +msgstr "" #: common/models.py:1433 -msgid "Copy parameter data by default when duplicating a part" -msgstr "Copiar datos de parámetro por defecto al duplicar una parte" +msgid "Copy Part BOM Data" +msgstr "" -#: common/models.py:1438 -msgid "Copy Part Test Data" -msgstr "Copiar parte de datos de prueba" +#: common/models.py:1434 +msgid "Copy BOM data by default when duplicating a part" +msgstr "" #: common/models.py:1439 -msgid "Copy test data by default when duplicating a part" -msgstr "Copiar datos de parámetro por defecto al duplicar una parte" +msgid "Copy Part Parameter Data" +msgstr "" -#: common/models.py:1444 -msgid "Copy Category Parameter Templates" -msgstr "Copiar plantillas de parámetros de categoría" +#: common/models.py:1440 +msgid "Copy parameter data by default when duplicating a part" +msgstr "" #: common/models.py:1445 -msgid "Copy category parameter templates when creating a part" -msgstr "Copiar plantillas de parámetros de categoría al crear una parte" +msgid "Copy Part Test Data" +msgstr "" -#: common/models.py:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1446 +msgid "Copy test data by default when duplicating a part" +msgstr "" + +#: common/models.py:1451 +msgid "Copy Category Parameter Templates" +msgstr "" + +#: common/models.py:1452 +msgid "Copy category parameter templates when creating a part" +msgstr "" + +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" -msgstr "Plantilla" +msgstr "" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" -msgstr "Las partes son plantillas por defecto" +msgstr "" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" -msgstr "Montaje" +msgstr "" -#: common/models.py:1457 +#: common/models.py:1464 msgid "Parts can be assembled from other components by default" -msgstr "Las partes pueden ser ensambladas desde otros componentes por defecto" +msgstr "" -#: common/models.py:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" -msgstr "Componente" +msgstr "" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Parts can be used as sub-components by default" -msgstr "Las partes pueden ser usadas como subcomponentes por defecto" +msgstr "" -#: common/models.py:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" -msgstr "Comprable" +msgstr "" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" -msgstr "Las partes son comprables por defecto" +msgstr "" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" -msgstr "Vendible" +msgstr "" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" -msgstr "Las partes se pueden vender por defecto" +msgstr "" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" -msgstr "Rastreable" +msgstr "" -#: common/models.py:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" -msgstr "Las partes son rastreables por defecto" +msgstr "" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" -msgstr "Virtual" +msgstr "" -#: common/models.py:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" -msgstr "Las partes son virtuales por defecto" - -#: common/models.py:1492 -msgid "Show Import in Views" -msgstr "Mostrar importación en vistas" - -#: common/models.py:1493 -msgid "Display the import wizard in some part views" -msgstr "Mostrar el asistente de importación en algunas vistas de partes" - -#: common/models.py:1498 -msgid "Show related parts" -msgstr "Mostrar partes relacionadas" +msgstr "" #: common/models.py:1499 -msgid "Display related parts for a part" -msgstr "Mostrar partes relacionadas para una parte" +msgid "Show Import in Views" +msgstr "" -#: common/models.py:1504 -msgid "Initial Stock Data" -msgstr "Datos iniciales de existencias" +#: common/models.py:1500 +msgid "Display the import wizard in some part views" +msgstr "" #: common/models.py:1505 -msgid "Allow creation of initial stock when adding a new part" -msgstr "Permitir la creación del stock inicial al añadir una nueva parte" +msgid "Show related parts" +msgstr "" -#: common/models.py:1510 templates/js/translated/part.js:107 -msgid "Initial Supplier Data" -msgstr "Datos iniciales del proveedor" +#: common/models.py:1506 +msgid "Display related parts for a part" +msgstr "" + +#: common/models.py:1511 +msgid "Initial Stock Data" +msgstr "" #: common/models.py:1512 -msgid "Allow creation of initial supplier data when adding a new part" -msgstr "Permitir la creación de datos iniciales del proveedor al agregar una nueva parte" +msgid "Allow creation of initial stock when adding a new part" +msgstr "" -#: common/models.py:1518 -msgid "Part Name Display Format" -msgstr "Formato de visualización de Nombre de Parte" +#: common/models.py:1517 templates/js/translated/part.js:107 +msgid "Initial Supplier Data" +msgstr "" #: common/models.py:1519 -msgid "Format to display the part name" -msgstr "Formato para mostrar el nombre de la parte" +msgid "Allow creation of initial supplier data when adding a new part" +msgstr "" #: common/models.py:1525 -msgid "Part Category Default Icon" -msgstr "Icono por defecto de la categoría de parte" +msgid "Part Name Display Format" +msgstr "" #: common/models.py:1526 -msgid "Part category default icon (empty means no icon)" -msgstr "Icono por defecto de la categoría de parte (vacío significa que no hay icono)" - -#: common/models.py:1530 -msgid "Enforce Parameter Units" -msgstr "Forzar unidades de parámetro" +msgid "Format to display the part name" +msgstr "" #: common/models.py:1532 +msgid "Part Category Default Icon" +msgstr "" + +#: common/models.py:1533 +msgid "Part category default icon (empty means no icon)" +msgstr "" + +#: common/models.py:1537 +msgid "Enforce Parameter Units" +msgstr "" + +#: common/models.py:1539 msgid "If units are provided, parameter values must match the specified units" -msgstr "Si se proporcionan unidades, los valores de parámetro deben coincidir con las unidades especificadas" +msgstr "" -#: common/models.py:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" -msgstr "Mínimo de lugares decimales en el precio" +msgstr "" -#: common/models.py:1540 +#: common/models.py:1547 msgid "Minimum number of decimal places to display when rendering pricing data" -msgstr "Número mínimo de decimales a mostrar al procesar los datos de precios" +msgstr "" -#: common/models.py:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" -msgstr "Máximo de lugares decimales en el precio" +msgstr "" -#: common/models.py:1548 +#: common/models.py:1555 msgid "Maximum number of decimal places to display when rendering pricing data" -msgstr "Número máximo de decimales a mostrar al procesar los datos de precios" +msgstr "" -#: common/models.py:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" -msgstr "Usar precios de proveedor" +msgstr "" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" -msgstr "Incluir descuentos de precios del proveedor en los cálculos generales de precios" +msgstr "" -#: common/models.py:1562 +#: common/models.py:1569 msgid "Purchase History Override" -msgstr "Anulación del historial de compra" +msgstr "" -#: common/models.py:1564 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" -msgstr "El precio histórico de compra anula los descuentos de precios del proveedor" +msgstr "" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" -msgstr "Usar precio del artículo de almacén" +msgstr "" -#: common/models.py:1572 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" -msgstr "Usar los precios de los datos de inventario introducidos manualmente para los cálculos de precios" +msgstr "" -#: common/models.py:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" -msgstr "Edad del precio del artículo de almacén" - -#: common/models.py:1580 -msgid "Exclude stock items older than this number of days from pricing calculations" -msgstr "Excluir artículos de almacén anteriores a este número de días de los cálculos de precios" +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 "Usar precios variantes" - -#: common/models.py:1588 -msgid "Include variant pricing in overall pricing calculations" -msgstr "Incluir variantes de precios en los cálculos generales de precios" - -#: common/models.py:1593 -msgid "Active Variants Only" -msgstr "Solo variantes activas" +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 "Usar solo partes de variantes activas para calcular los precios de variantes" +msgstr "" -#: common/models.py:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" -msgstr "Intervalo de reconstrucción de precios" - -#: common/models.py:1603 -msgid "Number of days before part pricing is automatically updated" -msgstr "Número de días antes de que el precio de la parte se actualice automáticamente" +msgstr "" #: common/models.py:1610 +msgid "Number of days before part pricing is automatically updated" +msgstr "Número de días antes de que el precio de la pieza se actualice automáticamente" + +#: common/models.py:1617 msgid "Internal Prices" -msgstr "Precios internos" - -#: common/models.py:1611 -msgid "Enable internal prices for parts" -msgstr "Habilitar precios internos para partes" - -#: common/models.py:1616 -msgid "Internal Price Override" -msgstr "Anulación del precio interno" +msgstr "" #: common/models.py:1618 -msgid "If available, internal prices override price range calculations" -msgstr "Si está disponible, los precios internos anulan los cálculos del rango de precios" +msgid "Enable internal prices for parts" +msgstr "" -#: common/models.py:1624 -msgid "Enable label printing" -msgstr "Habilitar impresión de etiquetas" +#: common/models.py:1623 +msgid "Internal Price Override" +msgstr "" #: common/models.py:1625 -msgid "Enable label printing from the web interface" -msgstr "Habilitar impresión de etiquetas desde la interfaz web" +msgid "If available, internal prices override price range calculations" +msgstr "" -#: common/models.py:1630 -msgid "Label Image DPI" -msgstr "PPP de la imagen de etiqueta" +#: common/models.py:1631 +msgid "Enable label printing" +msgstr "" #: common/models.py:1632 -msgid "DPI resolution when generating image files to supply to label printing plugins" -msgstr "Resolución DPI al generar archivos de imagen que suministrar para etiquetar complementos de impresión" +msgid "Enable label printing from the web interface" +msgstr "" -#: common/models.py:1638 +#: 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 "Habilitar informes" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" -msgstr "Habilitar generación de informes" +msgstr "Habilitar la generación de informes" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "Modo de depuración" -#: common/models.py:1645 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "Generar informes en modo de depuración (salida HTML)" -#: common/models.py:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 -msgid "Page Size" -msgstr "Tamaño de página" - -#: common/models.py:1651 -msgid "Default page size for PDF reports" -msgstr "Tamaño de página predeterminado para informes PDF" - -#: common/models.py:1656 -msgid "Enable Test Reports" -msgstr "Habilitar informes de prueba" - #: common/models.py:1657 -msgid "Enable generation of test reports" -msgstr "Habilitar generación de informes de prueba" +msgid "Log Report Errors" +msgstr "" -#: common/models.py:1662 -msgid "Attach Test Reports" -msgstr "Adjuntar informes de prueba" +#: 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:202 +msgid "Page Size" +msgstr "Formato de papel" #: common/models.py:1664 -msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" -msgstr "Al imprimir un informe de prueba, adjuntar una copia del informe de prueba al artículo de almacén asociado" +msgid "Default page size for PDF reports" +msgstr "Formato de papel predeterminado para informes en PDF" + +#: common/models.py:1669 +msgid "Enable Test Reports" +msgstr "" #: common/models.py:1670 -msgid "Globally Unique Serials" -msgstr "Seriales únicos globalmente" +msgid "Enable generation of test reports" +msgstr "" -#: common/models.py:1671 -msgid "Serial numbers for stock items must be globally unique" -msgstr "Los números de serie para los artículos de inventario deben ser únicos globalmente" - -#: common/models.py:1676 -msgid "Autofill Serial Numbers" -msgstr "Autollenar números de serie" +#: common/models.py:1675 +msgid "Attach Test Reports" +msgstr "" #: common/models.py:1677 -msgid "Autofill serial numbers in forms" -msgstr "Autorellenar números de serie en formularios" +msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" +msgstr "" -#: common/models.py:1682 -msgid "Delete Depleted Stock" -msgstr "Eliminar existencias agotadas" +#: common/models.py:1683 +msgid "Globally Unique Serials" +msgstr "" #: common/models.py:1684 -msgid "Determines default behaviour when a stock item is depleted" -msgstr "Determina el comportamiento predeterminado cuando un artículo de almacén es agotado" +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 "Batch Code Template" -msgstr "Plantilla de código de lote" +msgid "Autofill serial numbers in forms" +msgstr "" -#: common/models.py:1692 -msgid "Template for generating default batch codes for stock items" -msgstr "Plantilla para generar códigos de lote por defecto para artículos de almacén" +#: common/models.py:1695 +msgid "Delete Depleted Stock" +msgstr "" #: common/models.py:1697 -msgid "Stock Expiry" -msgstr "Expiración de stock" - -#: common/models.py:1698 -msgid "Enable stock expiry functionality" -msgstr "Habilitar la funcionalidad de expiración de stock" +msgid "Determines default behaviour when a stock item is depleted" +msgstr "" #: common/models.py:1703 -msgid "Sell Expired Stock" -msgstr "Vender existencias caducadas" +msgid "Batch Code Template" +msgstr "" -#: common/models.py:1704 -msgid "Allow sale of expired stock" -msgstr "Permitir venta de existencias caducadas" +#: common/models.py:1705 +msgid "Template for generating default batch codes for stock items" +msgstr "" -#: common/models.py:1709 -msgid "Stock Stale Time" -msgstr "Tiempo histórico de Stock" +#: common/models.py:1710 +msgid "Stock Expiry" +msgstr "" #: common/models.py:1711 -msgid "Number of days stock items are considered stale before expiring" -msgstr "Número de días de artículos de stock se consideran obsoletos antes de caducar" +msgid "Enable stock expiry functionality" +msgstr "" -#: common/models.py:1718 -msgid "Build Expired Stock" -msgstr "Crear Stock Caducado" +#: common/models.py:1716 +msgid "Sell Expired Stock" +msgstr "Entregar Existencias Caducadas" -#: common/models.py:1719 -msgid "Allow building with expired stock" -msgstr "Permitir crear con stock caducado" +#: 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 "Stock Ownership Control" -msgstr "Control de Stock" - -#: common/models.py:1725 -msgid "Enable ownership control over stock locations and items" -msgstr "Habilitar control de propiedad sobre ubicaciones de stock y artículos" - -#: common/models.py:1730 -msgid "Stock Location Default Icon" -msgstr "Icono por defecto de ubicación de almacén" +msgid "Number of days stock items are considered stale before expiring" +msgstr "" #: common/models.py:1731 -msgid "Stock location default icon (empty means no icon)" -msgstr "Icono por defecto de ubicación de almacén (vacío significa que no hay icono)" +msgid "Build Expired Stock" +msgstr "" -#: common/models.py:1735 -msgid "Show Installed Stock Items" -msgstr "Mostrar Articulos de Stock Instalados" +#: common/models.py:1732 +msgid "Allow building with expired stock" +msgstr "" -#: common/models.py:1736 -msgid "Display installed stock items in stock tables" -msgstr "Mostrar los artículos de stock instalados en las tablas de stock" +#: common/models.py:1737 +msgid "Stock Ownership Control" +msgstr "" -#: common/models.py:1741 -msgid "Build Order Reference Pattern" -msgstr "Patrón de Referencia de Ordenes de Armado" +#: 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 "Build Order Reference Pattern" +msgstr "Patrón para Referencias de Orden de Ensamblado" + +#: common/models.py:1764 msgid "Required pattern for generating Build Order reference field" msgstr "Patrón requerido para generar el campo de referencia de la Orden de Ensamblado" -#: common/models.py:1749 +#: common/models.py:1770 msgid "Enable Return Orders" -msgstr "Habilitar órdenes de devolución" - -#: common/models.py:1750 -msgid "Enable return order functionality in the user interface" -msgstr "Habilitar la funcionalidad de orden de devolución en la interfaz de usuario" - -#: common/models.py:1755 -msgid "Return Order Reference Pattern" -msgstr "Patrón de referencia de orden de devolución" - -#: common/models.py:1757 -msgid "Required pattern for generating Return Order reference field" -msgstr "Patrón requerido para generar el campo de referencia de la orden de devolución" - -#: common/models.py:1763 -msgid "Edit Completed Return Orders" -msgstr "Editar ordenes de devolución completadas" - -#: common/models.py:1765 -msgid "Allow editing of return orders after they have been completed" -msgstr "Permitir la edición de ordenes de devolución después de que hayan sido completados" +msgstr "" #: common/models.py:1771 +msgid "Enable return order functionality in the user interface" +msgstr "" + +#: common/models.py:1776 +msgid "Return Order Reference Pattern" +msgstr "" + +#: common/models.py:1778 +msgid "Required pattern for generating Return Order reference field" +msgstr "" + +#: common/models.py:1784 +msgid "Edit Completed Return Orders" +msgstr "" + +#: common/models.py:1786 +msgid "Allow editing of return orders after they have been completed" +msgstr "" + +#: common/models.py:1792 msgid "Sales Order Reference Pattern" -msgstr "Patrón de Referencia de Ordenes de Venta" +msgstr "Patrón para la Referencia de los Pedidos de Entrega" -#: common/models.py:1773 +#: common/models.py:1794 msgid "Required pattern for generating Sales Order reference field" -msgstr "Patrón requerido para generar el campo de referencia de la orden de venta" +msgstr "Patrón requerido para generar el campo de referencia de la Petición de Entrega" -#: common/models.py:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" -msgstr "Envío Predeterminado de Ordenes de Venta" +msgstr "Envío Predeterminado de las Peticiones de Entrega" -#: common/models.py:1780 +#: common/models.py:1801 msgid "Enable creation of default shipment with sales orders" -msgstr "Habilitar la creación de envío predeterminado con ordenes de entrega" +msgstr "Habilitar la creación de envío predeterminado con pedidos de entrega" -#: common/models.py:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" -msgstr "Editar Ordenes de Venta Completados" +msgstr "Editar Pedidos Completados" -#: common/models.py:1787 +#: common/models.py:1808 msgid "Allow editing of sales orders after they have been shipped or completed" -msgstr "Permitir la edición de ordenes de venta después de que hayan sido enviados o completados" +msgstr "Permitir la edición de pedidos después de que hayan sido enviados o completados" -#: common/models.py:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" -msgstr "Patrón de Referencia de Orden de Compra" +msgstr "Patrón para Referencias de Orden de Compra" -#: common/models.py:1795 +#: common/models.py:1816 msgid "Required pattern for generating Purchase Order reference field" msgstr "Patrón requerido para generar el campo de referencia de la Orden de Compra" -#: common/models.py:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" -msgstr "Editar Ordenes de Compra Completados" +msgstr "" -#: common/models.py:1803 +#: common/models.py:1824 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" -msgstr "Autocompletar Ordenes de compra" +msgstr "" -#: common/models.py:1811 +#: common/models.py:1832 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1818 +#: common/models.py:1839 msgid "Enable password forgot" -msgstr "Habilitar función de contraseña olvidada" +msgstr "Habilitar recuperación de contraseña" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" -msgstr "Activar la función olvido de contraseña en las páginas de inicio de sesión" +msgstr "Permitir a los usuarios recuperar su contraseña al iniciar sesión" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "Habilitar registro" -#: common/models.py:1825 +#: common/models.py:1846 msgid "Enable self-registration for users on the login pages" -msgstr "Activar auto-registro para usuarios en las páginas de inicio de sesión" +msgstr "Permitir a usuarios registrarse por su cuenta" -#: common/models.py:1830 +#: common/models.py:1851 msgid "Enable SSO" -msgstr "Habilitar SSO" - -#: common/models.py:1831 -msgid "Enable SSO on the login pages" -msgstr "Habilitar SSO en las páginas de inicio de sesión" - -#: common/models.py:1836 -msgid "Enable SSO registration" -msgstr "Habilitar registro SSO" - -#: common/models.py:1838 -msgid "Enable self-registration via SSO for users on the login pages" -msgstr "Activar autoregistro a través de SSO para usuarios en las páginas de inicio de sesión" - -#: common/models.py:1844 -msgid "Email required" -msgstr "Email requerido" - -#: common/models.py:1845 -msgid "Require user to supply mail on signup" -msgstr "Requiere usuario para suministrar correo al registrarse" - -#: common/models.py:1850 -msgid "Auto-fill SSO users" -msgstr "Auto-rellenar usuarios SSO" +msgstr "" #: common/models.py:1852 -msgid "Automatically fill out user-details from SSO account-data" -msgstr "Rellenar automáticamente los datos de usuario de la cuenta SSO" +msgid "Enable SSO on the login pages" +msgstr "" -#: common/models.py:1858 -msgid "Mail twice" -msgstr "Correo dos veces" +#: common/models.py:1857 +msgid "Enable SSO registration" +msgstr "" #: common/models.py:1859 -msgid "On signup ask users twice for their mail" -msgstr "Al registrarse pregunte dos veces a los usuarios por su correo" - -#: common/models.py:1864 -msgid "Password twice" -msgstr "Contraseña dos veces" +msgid "Enable self-registration via SSO for users on the login pages" +msgstr "" #: common/models.py:1865 +msgid "Email required" +msgstr "Requerir email" + +#: common/models.py:1866 +msgid "Require user to supply mail on signup" +msgstr "Requerir al usuario una dirección de correo electrónico al registrarse" + +#: common/models.py:1871 +msgid "Auto-fill SSO users" +msgstr "" + +#: common/models.py:1873 +msgid "Automatically fill out user-details from SSO account-data" +msgstr "" + +#: common/models.py:1879 +msgid "Mail twice" +msgstr "" + +#: common/models.py:1880 +msgid "On signup ask users twice for their mail" +msgstr "" + +#: common/models.py:1885 +msgid "Password twice" +msgstr "" + +#: common/models.py:1886 msgid "On signup ask users twice for their password" -msgstr "Al registrarse, preguntar dos veces a los usuarios por su contraseña" +msgstr "" -#: common/models.py:1870 +#: common/models.py:1891 msgid "Allowed domains" -msgstr "Dominios permitidos" +msgstr "" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" -msgstr "Grupo al registrarse" - -#: common/models.py:1879 -msgid "Group to which new users are assigned on registration" -msgstr "Grupo al que se asignan nuevos usuarios al registrarse" - -#: common/models.py:1884 -msgid "Enforce MFA" -msgstr "Forzar MFA" - -#: common/models.py:1885 -msgid "Users must use multifactor security." -msgstr "Los usuarios deben utilizar seguridad multifactor." - -#: common/models.py:1890 -msgid "Check plugins on startup" -msgstr "Comprobar complementos al iniciar" - -#: common/models.py:1892 -msgid "Check that all plugins are installed on startup - enable in container environments" -msgstr "Comprobar que todos los complementos están instalados en el arranque - habilitar en entornos de contenedores" +msgstr "" #: common/models.py:1900 +msgid "Group to which new users are assigned on registration" +msgstr "" + +#: common/models.py:1905 +msgid "Enforce MFA" +msgstr "Requerir AFM" + +#: common/models.py:1906 +msgid "Users must use multifactor security." +msgstr "Requerir a los usuarios el uso de Autenticación de Factor Múltiple" + +#: common/models.py:1911 +msgid "Check plugins on startup" +msgstr "" + +#: common/models.py:1913 +msgid "Check that all plugins are installed on startup - enable in container environments" +msgstr "" + +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1907 -msgid "Enable URL integration" -msgstr "Habilitar integración de URL" - -#: common/models.py:1908 -msgid "Enable plugins to add URL routes" -msgstr "Habilitar plugins para añadir rutas de URL" - -#: common/models.py:1914 -msgid "Enable navigation integration" -msgstr "Habilitar integración de navegación" - -#: common/models.py:1915 -msgid "Enable plugins to integrate into navigation" -msgstr "Habilitar plugins para integrar en la navegación" - -#: common/models.py:1921 -msgid "Enable app integration" -msgstr "Habilitar integración de la aplicación" - -#: common/models.py:1922 -msgid "Enable plugins to add apps" -msgstr "Habilitar plugins para añadir aplicaciones" - #: common/models.py:1928 -msgid "Enable schedule integration" -msgstr "Habilitar integración de programación" +msgid "Enable URL integration" +msgstr "" #: common/models.py:1929 -msgid "Enable plugins to run scheduled tasks" -msgstr "Habilitar plugins para ejecutar tareas programadas" +msgid "Enable plugins to add URL routes" +msgstr "" #: common/models.py:1935 -msgid "Enable event integration" -msgstr "Habilitar integración de eventos" +msgid "Enable navigation integration" +msgstr "" #: common/models.py:1936 -msgid "Enable plugins to respond to internal events" -msgstr "Habilitar plugins para responder a eventos internos" +msgid "Enable plugins to integrate into navigation" +msgstr "" #: common/models.py:1942 -msgid "Enable project codes" -msgstr "Habilitar códigos de proyecto" +msgid "Enable app integration" +msgstr "" #: common/models.py:1943 -msgid "Enable project codes for tracking projects" -msgstr "Habilitar códigos de proyecto para rastrear proyectos" +msgid "Enable plugins to add apps" +msgstr "" -#: common/models.py:1948 -msgid "Stocktake Functionality" +#: common/models.py:1949 +msgid "Enable schedule integration" msgstr "" #: common/models.py:1950 -msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +msgid "Enable plugins to run scheduled tasks" msgstr "" #: common/models.py:1956 -msgid "Exclude External Locations" -msgstr "Excluir Ubicaciones Externas" +msgid "Enable event integration" +msgstr "" -#: common/models.py:1958 -msgid "Exclude stock items in external locations from stocktake calculations" +#: common/models.py:1957 +msgid "Enable plugins to respond to internal events" +msgstr "" + +#: common/models.py:1963 +msgid "Enable project codes" msgstr "" #: common/models.py:1964 +msgid "Enable project codes for tracking projects" +msgstr "" + +#: common/models.py:1969 +msgid "Stocktake Functionality" +msgstr "" + +#: common/models.py:1971 +msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +msgstr "" + +#: common/models.py:1977 +msgid "Exclude External Locations" +msgstr "" + +#: common/models.py:1979 +msgid "Exclude stock items in external locations from stocktake calculations" +msgstr "" + +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1966 +#: common/models.py:1987 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" -msgstr "Intervalo de borrado de informe" +msgstr "" -#: common/models.py:1974 +#: common/models.py:1995 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1981 +#: common/models.py:2002 msgid "Display Users full names" -msgstr "Mostrar nombres completos de los usuarios" +msgstr "" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" -msgstr "Mostrar nombres completos de usuarios en lugar de nombres de usuario" +msgstr "" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2029 common/models.py:2429 msgid "Settings key (must be unique - case insensitive" -msgstr "Tecla de ajustes (debe ser única - mayúsculas y minúsculas" - -#: common/models.py:2043 -msgid "Hide inactive parts" -msgstr "Ocultar partes inactivas" - -#: common/models.py:2045 -msgid "Hide inactive parts in results displayed on the homepage" -msgstr "Ocultar partes inactivas en los resultados mostrados en la página de inicio" - -#: common/models.py:2051 -msgid "Show subscribed parts" -msgstr "Mostrar partes suscritas" - -#: common/models.py:2052 -msgid "Show subscribed parts on the homepage" -msgstr "Mostrar las partes suscritas en la página principal" - -#: common/models.py:2057 -msgid "Show subscribed categories" -msgstr "Mostrar categorías suscritas" - -#: common/models.py:2058 -msgid "Show subscribed part categories on the homepage" -msgstr "Mostrar categorías de partes suscritas en la página de inicio" - -#: common/models.py:2063 -msgid "Show latest parts" -msgstr "Mostrar últimas partes" - -#: common/models.py:2064 -msgid "Show latest parts on the homepage" -msgstr "Mostrar las últimas partes en la página de inicio" - -#: common/models.py:2069 -msgid "Show unvalidated BOMs" -msgstr "Mostrar BOMs no validadas" +msgstr "" #: common/models.py:2070 +msgid "Hide inactive parts" +msgstr "" + +#: common/models.py:2072 +msgid "Hide inactive parts in results displayed on the homepage" +msgstr "" + +#: common/models.py:2078 +msgid "Show subscribed parts" +msgstr "" + +#: common/models.py:2079 +msgid "Show subscribed parts on the homepage" +msgstr "" + +#: common/models.py:2084 +msgid "Show subscribed categories" +msgstr "" + +#: common/models.py:2085 +msgid "Show subscribed part categories on the homepage" +msgstr "" + +#: common/models.py:2090 +msgid "Show latest parts" +msgstr "" + +#: common/models.py:2091 +msgid "Show latest parts on the homepage" +msgstr "" + +#: common/models.py:2096 +msgid "Show unvalidated BOMs" +msgstr "Mostrar Lista de Materiales (BOMs) no validados" + +#: common/models.py:2097 msgid "Show BOMs that await validation on the homepage" -msgstr "Mostrar BOMs que esperan validación en la página de inicio" +msgstr "" -#: common/models.py:2075 +#: common/models.py:2102 msgid "Show recent stock changes" -msgstr "Mostrar cambios recientes de stock" +msgstr "" -#: common/models.py:2076 +#: common/models.py:2103 msgid "Show recently changed stock items on the homepage" -msgstr "Mostrar artículos de stock recientemente modificados en la página de inicio" +msgstr "" -#: common/models.py:2081 +#: common/models.py:2108 msgid "Show low stock" -msgstr "Mostrar stock bajo" +msgstr "" -#: common/models.py:2082 +#: common/models.py:2109 msgid "Show low stock items on the homepage" -msgstr "Mostrar artículos de stock bajo en la página de inicio" +msgstr "" -#: common/models.py:2087 +#: common/models.py:2114 msgid "Show depleted stock" -msgstr "Mostrar stock agotado" +msgstr "" -#: common/models.py:2088 +#: common/models.py:2115 msgid "Show depleted stock items on the homepage" -msgstr "Mostrar artículos agotados en la página de inicio" +msgstr "" -#: common/models.py:2093 +#: common/models.py:2120 msgid "Show needed stock" -msgstr "Mostrar stock necesario" +msgstr "" -#: common/models.py:2094 +#: common/models.py:2121 msgid "Show stock items needed for builds on the homepage" -msgstr "Mostrar artículos de stock necesarios para trabajos en la página de inicio" +msgstr "" -#: common/models.py:2099 +#: common/models.py:2126 msgid "Show expired stock" -msgstr "Mostrar stock caducado" +msgstr "" -#: common/models.py:2100 +#: common/models.py:2127 msgid "Show expired stock items on the homepage" -msgstr "Mostrar artículos de stock caducados en la página de inicio" +msgstr "" -#: common/models.py:2105 +#: common/models.py:2132 msgid "Show stale stock" -msgstr "Mostrar stock obsoleto" +msgstr "" -#: common/models.py:2106 +#: common/models.py:2133 msgid "Show stale stock items on the homepage" -msgstr "Mostrar artículos de stock obsoletos en la página de inicio" +msgstr "" -#: common/models.py:2111 +#: common/models.py:2138 msgid "Show pending builds" -msgstr "Mostrar trabajos pendientes" +msgstr "" -#: common/models.py:2112 +#: common/models.py:2139 msgid "Show pending builds on the homepage" -msgstr "Mostrar trabajos pendientes en la página de inicio" +msgstr "" -#: common/models.py:2117 +#: common/models.py:2144 msgid "Show overdue builds" -msgstr "Mostrar trabajos vencidos" +msgstr "" -#: common/models.py:2118 +#: common/models.py:2145 msgid "Show overdue builds on the homepage" -msgstr "Mostrar trabajos pendientes en la página de inicio" +msgstr "" -#: common/models.py:2123 +#: common/models.py:2150 msgid "Show outstanding POs" -msgstr "Mostrar Órdenes de Compra Pendientes" +msgstr "" -#: common/models.py:2124 +#: common/models.py:2151 msgid "Show outstanding POs on the homepage" -msgstr "Mostrar las OC destacadas en la página de inicio" +msgstr "" -#: common/models.py:2129 +#: common/models.py:2156 msgid "Show overdue POs" -msgstr "Mostrar OC atrasadas" +msgstr "" -#: common/models.py:2130 +#: common/models.py:2157 msgid "Show overdue POs on the homepage" -msgstr "Mostrar las OC vencidas en la página de inicio" +msgstr "" -#: common/models.py:2135 +#: common/models.py:2162 msgid "Show outstanding SOs" -msgstr "Mostrar OV pendiemtes" +msgstr "" -#: common/models.py:2136 +#: common/models.py:2163 msgid "Show outstanding SOs on the homepage" -msgstr "Mostrar OV pendientes en la página de inicio" +msgstr "" -#: common/models.py:2141 +#: common/models.py:2168 msgid "Show overdue SOs" -msgstr "Mostrar OV atrasadas" +msgstr "" -#: common/models.py:2142 +#: common/models.py:2169 msgid "Show overdue SOs on the homepage" -msgstr "Mostrar OV atrasadas en la página de inicio" +msgstr "" -#: common/models.py:2147 +#: common/models.py:2174 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2148 +#: common/models.py:2175 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2153 +#: common/models.py:2180 msgid "Show News" -msgstr "Mostrar novedades" +msgstr "Mostrar noticias" -#: common/models.py:2154 +#: common/models.py:2181 msgid "Show news on the homepage" msgstr "Mostrar las últimas novedades de InvenTree en la página de inicio" -#: common/models.py:2159 +#: common/models.py:2186 msgid "Inline label display" -msgstr "Mostrar etiqueta interior" +msgstr "" -#: common/models.py:2161 +#: common/models.py:2188 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "Mostrar etiquetas PDF en el navegador, en lugar de descargar como un archivo" -#: common/models.py:2167 +#: common/models.py:2194 msgid "Default label printer" -msgstr "Impresora predeterminada" +msgstr "" -#: common/models.py:2169 +#: common/models.py:2196 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2175 +#: common/models.py:2202 msgid "Inline report display" -msgstr "Mostrar informe en línea" +msgstr "" -#: common/models.py:2177 +#: common/models.py:2204 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "Mostrar informes PDF en el navegador, en lugar de descargar como un archivo" -#: common/models.py:2183 +#: common/models.py:2210 msgid "Search Parts" -msgstr "Buscar partes" +msgstr "" -#: common/models.py:2184 +#: common/models.py:2211 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2189 +#: common/models.py:2216 msgid "Search Supplier Parts" -msgstr "Buscar partes de proveedor" +msgstr "" -#: common/models.py:2190 +#: common/models.py:2217 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2195 +#: common/models.py:2222 msgid "Search Manufacturer Parts" -msgstr "Buscar Partes del Fabricante" +msgstr "" -#: common/models.py:2196 +#: common/models.py:2223 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2201 -msgid "Hide Inactive Parts" -msgstr "Ocultar Partes Inactivas" - -#: common/models.py:2202 -msgid "Excluded inactive parts from search preview window" -msgstr "Excluir las partes inactivas de la ventana de previsualización de búsqueda" - -#: common/models.py:2207 -msgid "Search Categories" -msgstr "Buscar categorías" - -#: common/models.py:2208 -msgid "Display part categories in search preview window" -msgstr "Mostrar categorias de la parte en la ventana de previsualización de búsqueda" - -#: common/models.py:2213 -msgid "Search Stock" -msgstr "Buscar inventario" - -#: common/models.py:2214 -msgid "Display stock items in search preview window" -msgstr "Mostrar artículos del stock en la ventana de previsualización de búsqueda" - -#: common/models.py:2219 -msgid "Hide Unavailable Stock Items" -msgstr "Ocultar Artículos del Stock Agotados" - -#: common/models.py:2221 -msgid "Exclude stock items which are not available from the search preview window" -msgstr "Excluir artículos de stock que no están disponibles en la ventana de previsualización de búsqueda" - -#: common/models.py:2227 -msgid "Search Locations" -msgstr "Buscar ubicaciones" - #: common/models.py:2228 -msgid "Display stock locations in search preview window" -msgstr "Mostrar ubicaciones de almacén en la ventana de vista previa de búsqueda" +msgid "Hide Inactive Parts" +msgstr "" -#: common/models.py:2233 -msgid "Search Companies" -msgstr "Buscar empresas" +#: common/models.py:2229 +msgid "Excluded inactive parts from search preview window" +msgstr "" #: common/models.py:2234 -msgid "Display companies in search preview window" -msgstr "Mostrar empresas en la ventana de vista previa de búsqueda" +msgid "Search Categories" +msgstr "" -#: common/models.py:2239 -msgid "Search Build Orders" -msgstr "Buscar Pedidos de Construcción" +#: common/models.py:2235 +msgid "Display part categories in search preview window" +msgstr "" #: common/models.py:2240 -msgid "Display build orders in search preview window" +msgid "Search Stock" msgstr "" -#: common/models.py:2245 -msgid "Search Purchase Orders" -msgstr "Buscar órdenes de compra" +#: common/models.py:2241 +msgid "Display stock items in search preview window" +msgstr "" #: common/models.py:2246 -msgid "Display purchase orders in search preview window" +msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2251 -msgid "Exclude Inactive Purchase Orders" -msgstr "Excluir pedidos de compra inactivos" - -#: common/models.py:2253 -msgid "Exclude inactive purchase orders from search preview window" +#: common/models.py:2248 +msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2259 -msgid "Search Sales Orders" -msgstr "Buscar órdenes de venta" +#: common/models.py:2254 +msgid "Search Locations" +msgstr "" + +#: common/models.py:2255 +msgid "Display stock locations in search preview window" +msgstr "" #: common/models.py:2260 -msgid "Display sales orders in search preview window" +msgid "Search Companies" msgstr "" -#: common/models.py:2265 -msgid "Exclude Inactive Sales Orders" +#: common/models.py:2261 +msgid "Display companies in search preview window" +msgstr "" + +#: common/models.py:2266 +msgid "Search Build Orders" msgstr "" #: common/models.py:2267 -msgid "Exclude inactive sales orders from search preview window" +msgid "Display build orders in search preview window" +msgstr "" + +#: common/models.py:2272 +msgid "Search Purchase Orders" msgstr "" #: common/models.py:2273 -msgid "Search Return Orders" -msgstr "Buscar órdenes de devolución" +msgid "Display purchase orders in search preview window" +msgstr "" -#: common/models.py:2274 +#: common/models.py:2278 +msgid "Exclude Inactive Purchase Orders" +msgstr "" + +#: common/models.py:2280 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "" + +#: common/models.py:2286 +msgid "Search Sales Orders" +msgstr "Buscar Pedidos de Entrega" + +#: common/models.py:2287 +msgid "Display sales orders in search preview window" +msgstr "Mostrar pedidos de entrega en la ventana de vista previa de búsqueda" + +#: common/models.py:2292 +msgid "Exclude Inactive Sales Orders" +msgstr "Excluir Pedidos Inactivos" + +#: common/models.py:2294 +msgid "Exclude inactive sales orders from search preview window" +msgstr "Excluir pedidos inactivos de la ventana de vista previa de búsqueda" + +#: common/models.py:2300 +msgid "Search Return Orders" +msgstr "" + +#: common/models.py:2301 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2279 +#: common/models.py:2306 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2281 +#: common/models.py:2308 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2287 +#: common/models.py:2314 msgid "Search Preview Results" -msgstr "Resultados de la vista previa" +msgstr "" -#: common/models.py:2289 +#: common/models.py:2316 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2295 +#: common/models.py:2322 msgid "Regex Search" -msgstr "Búsqueda usando una expresión regular" - -#: common/models.py:2296 -msgid "Enable regular expressions in search queries" -msgstr "Habilitar expresiones regulares en las consultas de búsqueda" - -#: common/models.py:2301 -msgid "Whole Word Search" -msgstr "Búsqueda por palabra completa" - -#: common/models.py:2302 -msgid "Search queries return results for whole word matches" -msgstr "Las consultas de búsqueda devuelven resultados para palabras enteras coincidentes" - -#: common/models.py:2307 -msgid "Show Quantity in Forms" -msgstr "Mostrar cantidad en formularios" - -#: common/models.py:2308 -msgid "Display available part quantity in some forms" -msgstr "Mostrar la cantidad de partes disponibles en algunos formularios" - -#: common/models.py:2313 -msgid "Escape Key Closes Forms" -msgstr "Formularios de cierre de teclas de escape" - -#: common/models.py:2314 -msgid "Use the escape key to close modal forms" -msgstr "Usa la clave de escape para cerrar formularios modales" - -#: common/models.py:2319 -msgid "Fixed Navbar" -msgstr "Barra de navegación fija" - -#: common/models.py:2320 -msgid "The navbar position is fixed to the top of the screen" -msgstr "La posición de la barra de navegación se fija en la parte superior de la pantalla" - -#: common/models.py:2325 -msgid "Date Format" -msgstr "Formato de Fecha" - -#: common/models.py:2326 -msgid "Preferred format for displaying dates" -msgstr "Formato preferido para mostrar fechas" - -#: common/models.py:2339 part/templates/part/detail.html:41 -msgid "Part Scheduling" -msgstr "Planificación de partes" - -#: common/models.py:2340 -msgid "Display part scheduling information" msgstr "" -#: common/models.py:2345 part/templates/part/detail.html:62 -msgid "Part Stocktake" +#: common/models.py:2323 +msgid "Enable regular expressions in search queries" +msgstr "" + +#: common/models.py:2328 +msgid "Whole Word Search" +msgstr "" + +#: common/models.py:2329 +msgid "Search queries return results for whole word matches" +msgstr "" + +#: common/models.py:2334 +msgid "Show Quantity in Forms" +msgstr "" + +#: common/models.py:2335 +msgid "Display available part quantity in some forms" +msgstr "" + +#: common/models.py:2340 +msgid "Escape Key Closes Forms" +msgstr "" + +#: common/models.py:2341 +msgid "Use the escape key to close modal forms" +msgstr "" + +#: common/models.py:2346 +msgid "Fixed Navbar" msgstr "" #: common/models.py:2347 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" + +#: common/models.py:2352 +msgid "Date Format" +msgstr "Formato de Fecha" + +#: common/models.py:2353 +msgid "Preferred format for displaying dates" +msgstr "" + +#: common/models.py:2366 part/templates/part/detail.html:41 +msgid "Part Scheduling" +msgstr "Planificación de piezas" + +#: common/models.py:2367 +msgid "Display part scheduling information" +msgstr "Mostrar información de programación de piezas" + +#: common/models.py:2372 part/templates/part/detail.html:62 +msgid "Part Stocktake" +msgstr "" + +#: common/models.py:2374 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2353 +#: common/models.py:2380 msgid "Table String Length" msgstr "" -#: common/models.py:2355 +#: common/models.py:2382 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2361 +#: common/models.py:2388 msgid "Default part label template" msgstr "" -#: common/models.py:2362 +#: common/models.py:2389 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2367 +#: common/models.py:2394 msgid "Default stock item template" msgstr "" -#: common/models.py:2369 +#: common/models.py:2396 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2375 +#: common/models.py:2402 msgid "Default stock location label template" msgstr "" -#: common/models.py:2377 +#: common/models.py:2404 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2383 +#: common/models.py:2410 msgid "Receive error reports" -msgstr "Recibir reportes de error" +msgstr "" -#: common/models.py:2384 +#: common/models.py:2411 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2389 +#: common/models.py:2416 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2417 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2460 msgid "Price break quantity" -msgstr "Cantidad de salto de precio" +msgstr "" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3503,23 +3536,23 @@ msgstr "Cantidad de salto de precio" msgid "Price" msgstr "Precio" -#: common/models.py:2441 +#: common/models.py:2468 msgid "Unit price at specified quantity" msgstr "Precio unitario a la cantidad especificada" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2639 common/models.py:2824 msgid "Endpoint" -msgstr "Endpoint" +msgstr "" -#: common/models.py:2613 +#: common/models.py:2640 msgid "Endpoint at which this webhook is received" -msgstr "Punto final en el que se recibe este webhook" +msgstr "" -#: common/models.py:2623 +#: common/models.py:2650 msgid "Name for this webhook" -msgstr "Nombre para este webhook" +msgstr "" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3527,103 +3560,103 @@ msgstr "Nombre para este webhook" #: templates/js/translated/table_filters.js:520 #: templates/js/translated/table_filters.js:716 users/models.py:169 msgid "Active" -msgstr "Activo" +msgstr "" -#: common/models.py:2627 +#: common/models.py:2654 msgid "Is this webhook active" -msgstr "Está activo este webhook" +msgstr "" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2670 users/models.py:148 msgid "Token" -msgstr "Token" +msgstr "" -#: common/models.py:2644 +#: common/models.py:2671 msgid "Token for access" -msgstr "Token para el acceso" +msgstr "" -#: common/models.py:2652 +#: common/models.py:2679 msgid "Secret" -msgstr "Clave" +msgstr "" -#: common/models.py:2653 +#: common/models.py:2680 msgid "Shared secret for HMAC" -msgstr "Secreto compartido para HMAC" - -#: common/models.py:2761 -msgid "Message ID" -msgstr "ID de mensaje" - -#: common/models.py:2762 -msgid "Unique identifier for this message" -msgstr "Identificador único para este mensaje" - -#: common/models.py:2770 -msgid "Host" -msgstr "Host" - -#: common/models.py:2771 -msgid "Host from which this message was received" -msgstr "Servidor desde el cual se recibió este mensaje" - -#: common/models.py:2779 -msgid "Header" -msgstr "Encabezado" - -#: common/models.py:2780 -msgid "Header of this message" -msgstr "Encabezado del mensaje" - -#: common/models.py:2787 -msgid "Body" -msgstr "Cuerpo" +msgstr "" #: common/models.py:2788 -msgid "Body of this message" -msgstr "Cuerpo de este mensaje" +msgid "Message ID" +msgstr "" + +#: common/models.py:2789 +msgid "Unique identifier for this message" +msgstr "" + +#: common/models.py:2797 +msgid "Host" +msgstr "" #: common/models.py:2798 +msgid "Host from which this message was received" +msgstr "" + +#: common/models.py:2806 +msgid "Header" +msgstr "" + +#: common/models.py:2807 +msgid "Header of this message" +msgstr "" + +#: common/models.py:2814 +msgid "Body" +msgstr "" + +#: common/models.py:2815 +msgid "Body of this message" +msgstr "" + +#: common/models.py:2825 msgid "Endpoint on which this message was received" -msgstr "Endpoint en el que se recibió este mensaje" +msgstr "" -#: common/models.py:2803 +#: common/models.py:2830 msgid "Worked on" -msgstr "Trabajado en" +msgstr "" -#: common/models.py:2804 +#: common/models.py:2831 msgid "Was the work on this message finished?" -msgstr "¿El trabajo en este mensaje ha terminado?" +msgstr "" -#: common/models.py:2930 +#: common/models.py:2957 msgid "Id" -msgstr "Id" +msgstr "" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2959 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" -msgstr "Título" +msgstr "" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2963 templates/js/translated/news.js:60 msgid "Published" -msgstr "Publicado" +msgstr "" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2965 templates/InvenTree/settings/plugin_settings.html:32 #: templates/js/translated/news.js:56 templates/js/translated/plugin.js:103 msgid "Author" -msgstr "Autor" +msgstr "" -#: common/models.py:2940 templates/js/translated/news.js:52 +#: common/models.py:2967 templates/js/translated/news.js:52 msgid "Summary" -msgstr "Resumen" +msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Read" -msgstr "Leer" +msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Was this news item read?" -msgstr "¿Esta noticia ya fue leída?" +msgstr "" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2987 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3631,49 +3664,49 @@ msgstr "¿Esta noticia ya fue leída?" #: templates/hover_image.html:7 templates/hover_image.html:9 #: templates/modals.html:6 msgid "Image" -msgstr "Imágen" +msgstr "Imagen" -#: common/models.py:2960 +#: common/models.py:2987 msgid "Image file" -msgstr "Archivo de imagen" - -#: common/models.py:3002 -msgid "Unit name must be a valid identifier" -msgstr "Nombre de unidad debe ser un identificador válido" - -#: common/models.py:3021 -msgid "Unit name" -msgstr "Nombre de unidad" - -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 -msgid "Symbol" -msgstr "Símbolo" +msgstr "" #: common/models.py:3029 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:3048 +msgid "Unit name" +msgstr "" + +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:3056 msgid "Optional unit symbol" -msgstr "Símbolo de unidad opcional" +msgstr "" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" -msgstr "Definición" +msgstr "" -#: common/models.py:3037 +#: common/models.py:3064 msgid "Unit definition" -msgstr "Definición de unidad" +msgstr "" #: common/notifications.py:314 #, python-brace-format msgid "New {verbose_name}" -msgstr "Nuevo {verbose_name}" +msgstr "" #: common/notifications.py:316 msgid "A new order has been created and assigned to you" -msgstr "Se ha creado un nuevo pedido y se le ha asignado" +msgstr "" #: common/notifications.py:322 #, python-brace-format msgid "{verbose_name} canceled" -msgstr "{verbose_name} cancelado" +msgstr "" #: common/notifications.py:324 msgid "A order that is assigned to you was canceled" @@ -3689,11 +3722,11 @@ msgstr "Los artículos han sido recibidos contra una orden de compra" #: common/notifications.py:339 msgid "Items have been received against a return order" -msgstr "Los artículos han sido recibidos contra una orden de devolución" +msgstr "" #: common/notifications.py:457 msgid "Error raised by plugin" -msgstr "Error generado por el complemento" +msgstr "" #: common/serializers.py:333 msgid "Is Running" @@ -3768,19 +3801,19 @@ msgstr "Subir Archivo" #: part/templates/part/import_wizard/match_fields.html:52 part/views.py:110 #: templates/patterns/wizard/match_fields.html:51 msgid "Match Fields" -msgstr "Coincidir Campos" +msgstr "" #: common/views.py:84 msgid "Match Items" -msgstr "Coincidir artículos" +msgstr "Concordar Artículos" #: common/views.py:401 msgid "Fields matching failed" -msgstr "Falló la coincidencia de campos" +msgstr "" #: common/views.py:464 msgid "Parts imported" -msgstr "Partes importadas" +msgstr "" #: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27 #: order/templates/order/order_wizard/match_parts.html:19 @@ -3791,11 +3824,11 @@ msgstr "Partes importadas" #: templates/patterns/wizard/match_fields.html:26 #: templates/patterns/wizard/upload.html:35 msgid "Previous Step" -msgstr "Paso anterior" +msgstr "Paso Anterior" #: company/models.py:113 msgid "Company description" -msgstr "Descripción de la empresa" +msgstr "Descripción de la compañía" #: company/models.py:114 msgid "Description of the company" @@ -3805,7 +3838,7 @@ msgstr "Descripción de la empresa" #: templates/InvenTree/settings/plugin_settings.html:54 #: templates/js/translated/company.js:522 msgid "Website" -msgstr "Página web" +msgstr "Sitio Web" #: company/models.py:119 msgid "Company website URL" @@ -3813,7 +3846,7 @@ msgstr "URL del sitio web de la empresa" #: company/models.py:124 msgid "Phone number" -msgstr "Teléfono" +msgstr "Número de teléfono" #: company/models.py:126 msgid "Contact phone number" @@ -3852,7 +3885,7 @@ msgstr "es proveedor" #: company/models.py:167 msgid "Do you purchase items from this company?" -msgstr "¿Compras artículos de esta empresa?" +msgstr "¿Compras artículos a esta empresa?" #: company/models.py:172 msgid "is manufacturer" @@ -3860,7 +3893,7 @@ msgstr "es fabricante" #: company/models.py:173 msgid "Does this company manufacture parts?" -msgstr "¿Esta empresa fabrica partes?" +msgstr "¿Esta empresa fabrica piezas?" #: company/models.py:181 msgid "Default currency used for this company" @@ -3875,104 +3908,104 @@ msgstr "Empresa" #: company/models.py:378 msgid "Select company" -msgstr "Seleccionar empresa" +msgstr "" #: company/models.py:383 msgid "Address title" -msgstr "Título de dirección" +msgstr "" #: company/models.py:384 msgid "Title describing the address entry" -msgstr "Título que describe la entrada de dirección" +msgstr "" #: company/models.py:390 msgid "Primary address" -msgstr "Dirección principal" +msgstr "" #: company/models.py:391 msgid "Set as primary address" -msgstr "Establecer como dirección principal" +msgstr "" #: company/models.py:396 templates/js/translated/company.js:904 #: templates/js/translated/company.js:961 msgid "Line 1" -msgstr "Línea 1" +msgstr "" #: company/models.py:397 msgid "Address line 1" -msgstr "Dirección línea 1" +msgstr "" #: company/models.py:403 templates/js/translated/company.js:905 #: templates/js/translated/company.js:967 msgid "Line 2" -msgstr "Línea 2" +msgstr "" #: company/models.py:404 msgid "Address line 2" -msgstr "Dirección línea 2" +msgstr "" #: company/models.py:410 company/models.py:411 #: templates/js/translated/company.js:973 msgid "Postal code" -msgstr "Código postal" +msgstr "" #: company/models.py:417 msgid "City/Region" -msgstr "Ciudad/región" +msgstr "" #: company/models.py:418 msgid "Postal code city/region" -msgstr "Código postal de ciudad/región" +msgstr "" #: company/models.py:424 msgid "State/Province" -msgstr "Estado/provincia" +msgstr "" #: company/models.py:425 msgid "State or province" -msgstr "Estado o provincia" +msgstr "" #: company/models.py:431 templates/js/translated/company.js:991 msgid "Country" -msgstr "País" +msgstr "" #: company/models.py:432 msgid "Address country" -msgstr "Dirección de país" +msgstr "" #: company/models.py:438 msgid "Courier shipping notes" -msgstr "Notas de envío de mensajería" +msgstr "" #: company/models.py:439 msgid "Notes for shipping courier" -msgstr "Notas para el mensajero de envío" +msgstr "" #: company/models.py:445 msgid "Internal shipping notes" -msgstr "Notas de envío internas" +msgstr "" #: company/models.py:446 msgid "Shipping notes for internal use" -msgstr "Notas de envío para uso interno" +msgstr "" #: company/models.py:453 msgid "Link to address information (external)" -msgstr "Enlace a información de dirección (externa)" +msgstr "" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" -msgstr "Parte base" +msgstr "Pieza Base" #: company/models.py:486 company/models.py:787 msgid "Select part" -msgstr "Seleccionar parte" +msgstr "Seleccionar pieza" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3987,7 +4020,7 @@ msgid "Select manufacturer" msgstr "Seleccionar fabricante" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -3995,11 +4028,11 @@ msgstr "Seleccionar fabricante" #: templates/js/translated/purchase_order.js:1852 #: templates/js/translated/purchase_order.js:2054 msgid "MPN" -msgstr "MPN" +msgstr "'Part Number' del Fabricante" #: company/models.py:503 msgid "Manufacturer Part Number" -msgstr "Número de parte de fabricante" +msgstr "'Part Number' del fabricante" #: company/models.py:510 msgid "URL for external manufacturer part link" @@ -4007,14 +4040,14 @@ msgstr "URL para el enlace de parte del fabricante externo" #: company/models.py:518 msgid "Manufacturer part description" -msgstr "Descripción de la parte del fabricante" +msgstr "Descripción de la pieza del fabricante" #: company/models.py:575 company/models.py:602 company/models.py:811 #: company/templates/company/manufacturer_part.html:7 #: company/templates/company/manufacturer_part.html:24 #: stock/templates/stock/item_base.html:217 msgid "Manufacturer Part" -msgstr "Parte del fabricante" +msgstr "Pieza del Fabricante" #: company/models.py:609 msgid "Parameter name" @@ -4022,9 +4055,9 @@ msgstr "Nombre del parámetro" #: company/models.py:615 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2438 templates/js/translated/company.js:1156 +#: stock/models.py:2441 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1519 msgid "Value" msgstr "Valor" @@ -4033,7 +4066,7 @@ msgid "Parameter value" msgstr "Valor del parámetro" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4046,20 +4079,20 @@ msgstr "Unidades de parámetro" #: company/models.py:725 msgid "Pack units must be compatible with the base part units" -msgstr "Las unidades de paquete deben ser compatibles con las unidades de partes de base" +msgstr "" #: company/models.py:732 msgid "Pack units must be greater than zero" -msgstr "Las unidades de paquete deben ser mayor que cero" +msgstr "" #: company/models.py:746 msgid "Linked manufacturer part must reference the same base part" -msgstr "La parte vinculada del fabricante debe hacer referencia a la misma parte base" +msgstr "La parte vinculada del fabricante debe hacer referencia a la misma pieza base" #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4076,52 +4109,52 @@ msgstr "Proveedor" msgid "Select supplier" msgstr "Seleccionar proveedor" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" -msgstr "Unidad de mantenimiento de stock de proveedores" +msgstr "" #: company/models.py:812 msgid "Select manufacturer part" -msgstr "Seleccionar parte del fabricante" +msgstr "" #: company/models.py:819 msgid "URL for external supplier part link" -msgstr "URL del enlace de parte del proveedor externo" +msgstr "" #: company/models.py:827 msgid "Supplier part description" -msgstr "Descripción de la parte del proveedor" +msgstr "Descripción de la pieza del proveedor" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:579 msgid "Note" msgstr "Nota" #: company/models.py:843 part/models.py:1966 msgid "base cost" -msgstr "costo base" +msgstr "" #: company/models.py:844 part/models.py:1967 msgid "Minimum charge (e.g. stocking fee)" -msgstr "Cargo mínimo (p. ej., cuota de almacenamiento)" +msgstr "" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 -#: templates/js/translated/stock.js:2387 +#: templates/js/translated/stock.js:2423 msgid "Packaging" -msgstr "Paquetes" +msgstr "Empaquetado" #: company/models.py:852 msgid "Part packaging" -msgstr "Embalaje de partes" +msgstr "Empaquetado de pieza" #: company/models.py:857 templates/js/translated/company.js:1641 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 @@ -4131,53 +4164,53 @@ msgstr "Embalaje de partes" #: templates/js/translated/purchase_order.js:2085 #: templates/js/translated/purchase_order.js:2102 msgid "Pack Quantity" -msgstr "Cantidad de paquete" +msgstr "" #: company/models.py:859 msgid "Total quantity supplied in a single pack. Leave empty for single items." -msgstr "Cantidad total suministrada en un solo paquete. Dejar vacío para artículos individuales." +msgstr "" #: company/models.py:878 part/models.py:1973 msgid "multiple" -msgstr "múltiple" +msgstr "" #: company/models.py:879 msgid "Order multiple" -msgstr "Pedido múltiple" +msgstr "" #: company/models.py:891 msgid "Quantity available from supplier" -msgstr "Cantidad disponible del proveedor" +msgstr "" #: company/models.py:897 msgid "Availability Updated" -msgstr "Disponibilidad actualizada" +msgstr "" #: company/models.py:898 msgid "Date of last update of availability data" -msgstr "Fecha de última actualización de los datos de disponibilidad" +msgstr "" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "Moneda predeterminada utilizada para este proveedor" #: company/templates/company/company_base.html:21 #: templates/js/translated/purchase_order.js:242 msgid "Create Purchase Order" -msgstr "Crear orden de compra" +msgstr "Crear Orden de Compra" #: company/templates/company/company_base.html:27 msgid "Company actions" -msgstr "Acciones de empresa" +msgstr "Actuaciones de la empresa" #: company/templates/company/company_base.html:32 msgid "Edit company information" -msgstr "Editar datos de la empresa" +msgstr "Editar información de la empresa" #: company/templates/company/company_base.html:33 #: templates/js/translated/company.js:444 msgid "Edit Company" -msgstr "Editar empresa" +msgstr "Modificar Empresa" #: company/templates/company/company_base.html:37 msgid "Delete company" @@ -4198,33 +4231,33 @@ msgstr "Eliminar Empresa" #: report/templates/report/inventree_test_report_base.html:84 #: report/templates/report/inventree_test_report_base.html:163 msgid "Part image" -msgstr "Imagen de parte" +msgstr "" #: company/templates/company/company_base.html:55 #: part/templates/part/part_thumb.html:12 msgid "Upload new image" -msgstr "Cargar nueva imagen" +msgstr "" #: company/templates/company/company_base.html:58 #: part/templates/part/part_thumb.html:14 msgid "Download image from URL" -msgstr "Descargar desde URL" +msgstr "" #: company/templates/company/company_base.html:60 #: part/templates/part/part_thumb.html:16 msgid "Delete image" -msgstr "Borrar imagen" +msgstr "" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1100 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 #: templates/js/translated/return_order.js:296 #: templates/js/translated/sales_order.js:784 -#: templates/js/translated/stock.js:2923 +#: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:804 msgid "Customer" msgstr "Cliente" @@ -4242,7 +4275,7 @@ msgstr "Dirección" #: company/templates/company/company_base.html:125 msgid "Phone" -msgstr "Teléfono" +msgstr "" #: company/templates/company/company_base.html:205 #: part/templates/part/part_base.html:528 @@ -4258,7 +4291,7 @@ msgstr "" #: templates/InvenTree/settings/user.html:88 #: templates/InvenTree/settings/user_sso.html:43 msgid "Remove" -msgstr "Eliminar" +msgstr "" #: company/templates/company/company_base.html:237 #: part/templates/part/part_base.html:560 @@ -4274,34 +4307,34 @@ msgstr "" #: company/templates/company/manufacturer_part_sidebar.html:7 #: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 msgid "Supplier Parts" -msgstr "Partes de Proveedor" +msgstr "Piezas del Proveedor" #: company/templates/company/detail.html:19 msgid "Create new supplier part" -msgstr "Crear nueva parte del proveedor" +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 "Nueva Parte de Proveedor" +msgstr "Nueva Pieza del Proveedor" #: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 #: templates/js/translated/search.js:151 msgid "Manufacturer Parts" -msgstr "Partes del fabricante" +msgstr "" #: company/templates/company/detail.html:45 msgid "Create new manufacturer part" -msgstr "Crear nueva parte de fabricante" +msgstr "" #: company/templates/company/detail.html:46 part/templates/part/detail.html:376 msgid "New Manufacturer Part" -msgstr "Nueva parte de fabricante" +msgstr "Nueva Pieza del Fabricante" #: company/templates/company/detail.html:65 msgid "Supplier Stock" -msgstr "Stock del Proveedor" +msgstr "" #: company/templates/company/detail.html:75 #: company/templates/company/sidebar.html:12 @@ -4315,7 +4348,7 @@ msgstr "Stock del Proveedor" #: templates/js/translated/search.js:205 templates/navbar.html:50 #: users/models.py:195 msgid "Purchase Orders" -msgstr "Ordenes de compra" +msgstr "Ordenes de Compra" #: company/templates/company/detail.html:79 #: order/templates/order/purchase_orders.html:17 @@ -4325,7 +4358,7 @@ msgstr "Crear nueva orden de compra" #: company/templates/company/detail.html:80 #: order/templates/order/purchase_orders.html:18 msgid "New Purchase Order" -msgstr "Nueva orden de compra" +msgstr "Nueva Orden de Compra" #: company/templates/company/detail.html:101 #: company/templates/company/sidebar.html:21 @@ -4338,21 +4371,21 @@ msgstr "Nueva orden de compra" #: templates/js/translated/search.js:219 templates/navbar.html:62 #: users/models.py:196 msgid "Sales Orders" -msgstr "Órdenes de venta" +msgstr "Pedidos de Entrega" #: company/templates/company/detail.html:105 #: order/templates/order/sales_orders.html:20 msgid "Create new sales order" -msgstr "Crear Orden de Venta" +msgstr "Crear un nuevo pedido de entrega" #: company/templates/company/detail.html:106 #: order/templates/order/sales_orders.html:21 msgid "New Sales Order" -msgstr "Nueva orden de venta" +msgstr "Nuevo Pedido de Entrega" #: company/templates/company/detail.html:126 msgid "Assigned Stock" -msgstr "Stock asignado" +msgstr "Stock Asignado" #: company/templates/company/detail.html:142 #: company/templates/company/sidebar.html:29 @@ -4363,39 +4396,39 @@ msgstr "Stock asignado" #: templates/js/translated/search.js:232 templates/navbar.html:65 #: users/models.py:197 msgid "Return Orders" -msgstr "Ordenes de devolución" +msgstr "" #: company/templates/company/detail.html:146 #: order/templates/order/return_orders.html:20 msgid "Create new return order" -msgstr "Crear nueva orden de devolución" +msgstr "" #: company/templates/company/detail.html:147 #: order/templates/order/return_orders.html:21 msgid "New Return Order" -msgstr "Nueva orden de devolución" +msgstr "" #: company/templates/company/detail.html:168 msgid "Company Notes" -msgstr "Notas de la empresa" +msgstr "Notas de la Empresa" #: company/templates/company/detail.html:183 msgid "Company Contacts" -msgstr "Contactos de la empresa" +msgstr "" #: company/templates/company/detail.html:187 #: company/templates/company/detail.html:188 msgid "Add Contact" -msgstr "Añadir contacto" +msgstr "" #: company/templates/company/detail.html:206 msgid "Company addresses" -msgstr "Direcciones de la empresa" +msgstr "" #: company/templates/company/detail.html:210 #: company/templates/company/detail.html:211 msgid "Add Address" -msgstr "Añadir dirección" +msgstr "" #: company/templates/company/manufacturer_part.html:15 company/views.py:37 #: templates/InvenTree/search.html:180 templates/navbar.html:49 @@ -4406,31 +4439,32 @@ msgstr "Fabricantes" #: company/templates/company/supplier_part.html:227 #: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 msgid "Order part" -msgstr "Pedir ítem" +msgstr "Pedir pieza" #: company/templates/company/manufacturer_part.html:39 #: templates/js/translated/company.js:1333 msgid "Edit manufacturer part" -msgstr "Editar fabricante de la parte" +msgstr "Editar pieza del fabricante" #: company/templates/company/manufacturer_part.html:43 #: templates/js/translated/company.js:1334 msgid "Delete manufacturer part" -msgstr "Eliminar fabricante de la parte" +msgstr "Eliminar pieza del fabricante" #: company/templates/company/manufacturer_part.html:65 #: company/templates/company/supplier_part.html:97 msgid "Internal Part" -msgstr "Componente interno" +msgstr "Pieza Interna" #: company/templates/company/manufacturer_part.html:95 msgid "No manufacturer information available" -msgstr "No hay información del fabricante disponible" +msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "Proveedores" @@ -4446,7 +4480,7 @@ msgstr "Parámetros" #: templates/InvenTree/settings/category.html:12 #: templates/InvenTree/settings/part_parameters.html:24 msgid "New Parameter" -msgstr "Nuevo parámetro" +msgstr "Nuevo Parámetro" #: company/templates/company/manufacturer_part.html:206 #: templates/js/translated/part.js:1422 @@ -4455,115 +4489,115 @@ msgstr "" #: company/templates/company/sidebar.html:6 msgid "Manufactured Parts" -msgstr "Partes Manufacturadas" +msgstr "" #: company/templates/company/sidebar.html:10 msgid "Supplied Parts" -msgstr "Partes suministradas" +msgstr "" #: company/templates/company/sidebar.html:16 msgid "Supplied Stock Items" -msgstr "Elementos de stock suministrados" +msgstr "Artículos de Stock Suministrados" #: company/templates/company/sidebar.html:25 msgid "Assigned Stock Items" -msgstr "Elementos de Stock Asignados" +msgstr "Artículos de Stock Asignados" #: company/templates/company/sidebar.html:33 msgid "Contacts" -msgstr "Contactos" +msgstr "" #: company/templates/company/sidebar.html:35 msgid "Addresses" -msgstr "Direcciones" +msgstr "" #: company/templates/company/supplier_part.html:7 #: company/templates/company/supplier_part.html:24 stock/models.py:765 #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2243 +#: templates/js/translated/stock.js:2279 msgid "Supplier Part" -msgstr "Parte del proveedor" +msgstr "Pieza del Proveedor" #: company/templates/company/supplier_part.html:50 #: templates/js/translated/company.js:1516 msgid "Supplier part actions" -msgstr "Acciones de partes del proveedor" +msgstr "Acciones de piezas del proveedor" #: 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 "Pedir ítem" +msgstr "Pedir Pieza" #: company/templates/company/supplier_part.html:60 #: company/templates/company/supplier_part.html:61 msgid "Update Availability" -msgstr "Actualizar disponibilidad" +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 "Editar Parte del Proveedor" +msgstr "Editar Pieza del Proveedor" #: 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 "Duplicar parte del proveedor" +msgstr "Duplicar Pieza del Proveedor" #: company/templates/company/supplier_part.html:73 msgid "Delete Supplier Part" -msgstr "Eliminar parte del proveedor" +msgstr "Eliminar Pieza del Proveedor" #: company/templates/company/supplier_part.html:74 msgid "Delete Supplier Part" -msgstr "Eliminar parte del proveedor" +msgstr "Eliminar Pieza del Proveedor" #: company/templates/company/supplier_part.html:133 msgid "No supplier information available" -msgstr "No hay información de proveedor disponible" +msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 #: templates/js/translated/purchase_order.js:2029 msgid "SKU" -msgstr "SKU" +msgstr "" #: company/templates/company/supplier_part.html:206 msgid "Supplier Part Stock" -msgstr "Stock del Proveedor" +msgstr "Stock de Piezas del Proveedor" #: company/templates/company/supplier_part.html:209 #: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 msgid "Create new stock item" -msgstr "Crear nuevo artículo de stock" +msgstr "Añadir un nuevo artículo en inventario" #: company/templates/company/supplier_part.html:210 #: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 #: templates/js/translated/stock.js:537 msgid "New Stock Item" -msgstr "Nuevo artículo de stock" +msgstr "Nueva Pieza en Stock" #: company/templates/company/supplier_part.html:223 msgid "Supplier Part Orders" -msgstr "Pedidos de partes al proveedor" +msgstr "Pedidos de Piezas al Proveedor" #: company/templates/company/supplier_part.html:246 msgid "Pricing Information" -msgstr "Información de precios" +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 "Agregar descuento de precio" +msgstr "" #: company/templates/company/supplier_part.html:276 msgid "Supplier Part QR Code" @@ -4577,22 +4611,24 @@ msgstr "" msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 -#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:193 msgid "Stock Items" -msgstr "Elementos de stock" +msgstr "Artículos de Stock" #: company/templates/company/supplier_part_sidebar.html:9 msgid "Supplier Part Pricing" -msgstr "Precio de parte del proveedor" +msgstr "Precio de Pieza del Proveedor" #: company/views.py:32 msgid "New Supplier" @@ -4617,7 +4653,7 @@ msgstr "Empresas" #: company/views.py:52 msgid "New Company" -msgstr "Nueva empresa" +msgstr "Nueva Empresa" #: label/api.py:247 msgid "Error printing label" @@ -4625,7 +4661,7 @@ msgstr "" #: label/models.py:120 msgid "Label name" -msgstr "Nombre etiqueta" +msgstr "" #: label/models.py:128 msgid "Label description" @@ -4633,45 +4669,45 @@ msgstr "Descripción de etiqueta" #: label/models.py:136 msgid "Label" -msgstr "Etiqueta" +msgstr "" #: label/models.py:137 msgid "Label template file" -msgstr "Archivo de plantilla de etiqueta" +msgstr "" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" -msgstr "Habilitado" +msgstr "" #: label/models.py:144 msgid "Label template is enabled" -msgstr "Plantilla de etiqueta habilitada" +msgstr "" #: label/models.py:149 msgid "Width [mm]" -msgstr "Ancho [mm]" +msgstr "" #: label/models.py:150 msgid "Label width, specified in mm" -msgstr "Ancho de la etiqueta, especificado en mm" +msgstr "" #: label/models.py:156 msgid "Height [mm]" -msgstr "Altura [mm]" +msgstr "" #: label/models.py:157 msgid "Label height, specified in mm" -msgstr "Altura de la etiqueta, especificada en mm" +msgstr "" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" -msgstr "Patrón de Nombre de archivo" +msgstr "" #: label/models.py:164 msgid "Pattern for generating label filenames" -msgstr "Patrón para generar nombres de archivo de etiquetas" +msgstr "" #: label/models.py:313 label/models.py:352 label/models.py:377 #: label/models.py:412 @@ -4679,23 +4715,23 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" -msgstr "Filtros" +msgstr "" #: label/templates/label/part/part_label.html:31 #: label/templates/label/stockitem/qr.html:21 #: label/templates/label/stocklocation/qr.html:20 #: templates/allauth_2fa/setup.html:18 msgid "QR Code" -msgstr "Código QR" +msgstr "" #: label/templates/label/part/part_label_code128.html:31 #: label/templates/label/stocklocation/qr_and_text.html:31 #: templates/qr_code.html:7 msgid "QR code" -msgstr "Código QR" +msgstr "" #: machine/machine_types/label_printer.py:217 msgid "Copies" @@ -4712,7 +4748,7 @@ msgstr "" #: machine/machine_types/label_printer.py:234 order/api.py:1461 #: templates/js/translated/sales_order.js:1042 msgid "Unknown" -msgstr "Desconocido" +msgstr "" #: machine/machine_types/label_printer.py:235 msgid "Printing" @@ -4821,54 +4857,54 @@ msgstr "No se encontró ninguna orden de compra coincidente" #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1674 -#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 msgid "Purchase Order" -msgstr "Orden de compra" +msgstr "Orden de Compra" #: order/api.py:1459 order/models.py:2193 order/models.py:2244 #: order/templates/order/return_order_base.html:9 #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 -#: templates/js/translated/stock.js:2905 +#: templates/js/translated/stock.js:2941 msgid "Return Order" -msgstr "Orden de devolución" +msgstr "" #: order/models.py:90 msgid "Total price for this order" -msgstr "Precio total para este pedido" +msgstr "" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" -msgstr "Moneda de pedido" +msgstr "" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" -msgstr "Moneda para este pedido (dejar en blanco para utilizar el valor predeterminado de la empresa)" +msgstr "" #: order/models.py:234 msgid "Contact does not match selected company" -msgstr "El contacto no coincide con la empresa seleccionada" +msgstr "" #: order/models.py:266 msgid "Order description (optional)" -msgstr "Descripción del pedido (opcional)" +msgstr "" #: order/models.py:275 msgid "Select project code for this order" -msgstr "Seleccione el código del proyecto para este pedido" +msgstr "" #: order/models.py:279 order/models.py:1276 order/models.py:1690 msgid "Link to external page" -msgstr "Enlace a Url externa" +msgstr "Enlace a página web externa" #: order/models.py:287 msgid "Expected date for order delivery. Order will be overdue after this date." -msgstr "Fecha esperada para la entrega del pedido. El pedido se retrasará después de esta fecha." +msgstr "" #: order/models.py:301 msgid "Created By" -msgstr "Creado por" +msgstr "" #: order/models.py:309 msgid "User or group responsible for this order" @@ -4876,11 +4912,11 @@ msgstr "Usuario o grupo responsable de este pedido" #: order/models.py:320 msgid "Point of contact for this order" -msgstr "Punto de contacto para este pedido" +msgstr "" #: order/models.py:330 msgid "Company address for this order" -msgstr "Dirección de la empresa para este pedido" +msgstr "" #: order/models.py:431 order/models.py:887 msgid "Order reference" @@ -4888,44 +4924,44 @@ msgstr "Referencia del pedido" #: order/models.py:439 order/models.py:911 msgid "Purchase order status" -msgstr "Estado de la orden de compra" +msgstr "" #: order/models.py:454 msgid "Company from which the items are being ordered" -msgstr "Empresa de la cual se están encargando los artículos" +msgstr "Empresa a la que se están encargando los artículos" #: order/models.py:465 order/templates/order/order_base.html:148 #: templates/js/translated/purchase_order.js:1703 msgid "Supplier Reference" -msgstr "Referencia del proveedor" +msgstr "Referencia del Proveedor" #: order/models.py:466 msgid "Supplier order reference code" -msgstr "Código de referencia de pedido del proveedor" +msgstr "" #: order/models.py:475 msgid "received by" -msgstr "recibido por" +msgstr "" #: order/models.py:481 order/models.py:2019 msgid "Issue Date" -msgstr "Fecha de emisión" +msgstr "" #: order/models.py:482 order/models.py:2020 msgid "Date order was issued" -msgstr "Fecha de expedición del pedido" +msgstr "" #: order/models.py:489 order/models.py:2027 msgid "Date order was completed" -msgstr "La fecha de pedido fue completada" +msgstr "" #: order/models.py:533 msgid "Part supplier must match PO supplier" -msgstr "El proveedor de la parte debe coincidir con el proveedor de PO" +msgstr "" #: order/models.py:727 msgid "Quantity must be a positive number" -msgstr "La cantidad debe ser un número positivo" +msgstr "" #: order/models.py:899 msgid "Company to which the items are being sold" @@ -4933,87 +4969,87 @@ msgstr "Empresa a la que se venden los artículos" #: order/models.py:922 order/models.py:2012 msgid "Customer Reference " -msgstr "Referencia del cliente " +msgstr "Referencia de Cliente " #: order/models.py:923 order/models.py:2013 msgid "Customer order reference code" -msgstr "Código de referencia de pedido del cliente" +msgstr "Código de referencia del pedido del cliente" #: order/models.py:927 order/models.py:1644 #: templates/js/translated/sales_order.js:843 #: templates/js/translated/sales_order.js:1024 msgid "Shipment Date" -msgstr "Fecha de envío" +msgstr "Fecha de Envío" #: order/models.py:936 msgid "shipped by" -msgstr "enviado por" +msgstr "" #: order/models.py:987 msgid "Order cannot be completed as no parts have been assigned" -msgstr "El pedido no se puede completar porque no se han asignado partes" +msgstr "" #: order/models.py:992 msgid "Only an open order can be marked as complete" -msgstr "Sólo una orden abierta puede ser marcada como completa" +msgstr "" #: order/models.py:996 templates/js/translated/sales_order.js:506 msgid "Order cannot be completed as there are incomplete shipments" -msgstr "El pedido no se puede completar porque hay envíos incompletos" +msgstr "" #: order/models.py:1001 msgid "Order cannot be completed as there are incomplete line items" -msgstr "El pedido no se puede completar porque hay partidas incompletas" +msgstr "" #: order/models.py:1248 msgid "Item quantity" -msgstr "Cantidad del artículo" +msgstr "" #: order/models.py:1265 msgid "Line item reference" -msgstr "Referencia de partida" +msgstr "Referencia de artículo de línea" #: order/models.py:1272 msgid "Line item notes" -msgstr "Notas de partida" +msgstr "" #: order/models.py:1284 msgid "Target date for this line item (leave blank to use the target date from the order)" -msgstr "Fecha objetivo para esta partida (dejar en blanco para usar la fecha de destino de la orden)" +msgstr "" #: order/models.py:1305 msgid "Line item description (optional)" -msgstr "Descripción de partida (opcional)" +msgstr "" #: order/models.py:1311 msgid "Context" -msgstr "Contexto" +msgstr "" #: order/models.py:1312 msgid "Additional context for this line" -msgstr "Contexto adicional para esta línea" +msgstr "" #: order/models.py:1322 msgid "Unit price" -msgstr "Precio unitario" +msgstr "Precio por unidad" #: order/models.py:1355 msgid "Supplier part must match supplier" -msgstr "La parte del proveedor debe coincidir con el proveedor" +msgstr "" #: order/models.py:1362 msgid "deleted" -msgstr "eliminado" +msgstr "" #: order/models.py:1370 order/models.py:1477 order/models.py:1523 #: order/models.py:1637 order/models.py:1789 order/models.py:2192 #: order/models.py:2243 templates/js/translated/sales_order.js:1488 msgid "Order" -msgstr "Orden" +msgstr "" #: order/models.py:1390 msgid "Supplier part" -msgstr "Parte del proveedor" +msgstr "" #: order/models.py:1397 order/templates/order/order_base.html:196 #: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 @@ -5023,99 +5059,99 @@ msgstr "Parte del proveedor" #: templates/js/translated/table_filters.js:120 #: templates/js/translated/table_filters.js:602 msgid "Received" -msgstr "Recibido" +msgstr "" #: order/models.py:1398 msgid "Number of items received" -msgstr "Número de artículos recibidos" +msgstr "" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2274 +#: templates/js/translated/stock.js:2310 msgid "Purchase Price" msgstr "Precio de Compra" #: order/models.py:1407 msgid "Unit purchase price" -msgstr "Precio de compra unitario" +msgstr "Precio de compra por unidad" #: order/models.py:1422 msgid "Where does the Purchaser want this item to be stored?" -msgstr "¿Dónde quiere el comprador almacenar este objeto?" +msgstr "" #: order/models.py:1511 msgid "Virtual part cannot be assigned to a sales order" -msgstr "Una parte virtual no puede ser asignada a un pedido de venta" +msgstr "Una pieza virtual no puede ser asignada a un pedido de entrega" #: order/models.py:1516 msgid "Only salable parts can be assigned to a sales order" -msgstr "Sólo las partes vendibles pueden ser asignadas a un pedido de venta" +msgstr "Sólo las piezas entregables pueden ser asignadas a un pedido de entrega" #: order/models.py:1542 part/templates/part/part_pricing.html:107 #: part/templates/part/prices.html:139 templates/js/translated/pricing.js:957 msgid "Sale Price" -msgstr "Precio de Venta" +msgstr "" #: order/models.py:1543 msgid "Unit sale price" -msgstr "Precio de venta unitario" +msgstr "Precio de venta por unidad" #: order/models.py:1553 msgid "Shipped quantity" -msgstr "Cantidad enviada" +msgstr "" #: order/models.py:1645 msgid "Date of shipment" -msgstr "Fecha del envío" +msgstr "" #: order/models.py:1651 templates/js/translated/sales_order.js:1036 msgid "Delivery Date" -msgstr "Fecha de entrega" +msgstr "" #: order/models.py:1652 msgid "Date of delivery of shipment" -msgstr "Fecha de entrega del envío" +msgstr "" #: order/models.py:1660 msgid "Checked By" -msgstr "Revisado por" +msgstr "" #: order/models.py:1661 msgid "User who checked this shipment" -msgstr "Usuario que revisó este envío" +msgstr "" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" -msgstr "Envío" +msgstr "" #: order/models.py:1669 msgid "Shipment number" -msgstr "Número de envío" +msgstr "" #: order/models.py:1677 msgid "Tracking Number" -msgstr "Número de Seguimiento" +msgstr "" #: order/models.py:1678 msgid "Shipment tracking information" -msgstr "Información de seguimiento del envío" +msgstr "" #: order/models.py:1685 msgid "Invoice Number" -msgstr "Número de factura" +msgstr "" #: order/models.py:1686 msgid "Reference number for associated invoice" -msgstr "Número de referencia para la factura asociada" +msgstr "" #: order/models.py:1706 msgid "Shipment has already been sent" -msgstr "El envío ya ha sido enviado" +msgstr "" #: order/models.py:1709 msgid "Shipment has no allocated stock items" -msgstr "El envío no tiene artículos de stock asignados" +msgstr "" #: order/models.py:1825 order/models.py:1827 msgid "Stock item has not been assigned" @@ -5123,267 +5159,267 @@ msgstr "El artículo de stock no ha sido asignado" #: order/models.py:1834 msgid "Cannot allocate stock item to a line with a different part" -msgstr "No se puede asignar el artículo de stock a una línea con una parte diferente" +msgstr "" #: order/models.py:1837 msgid "Cannot allocate stock to a line without a part" -msgstr "No se puede asignar stock a una línea sin una parte" +msgstr "" #: order/models.py:1840 msgid "Allocation quantity cannot exceed stock quantity" -msgstr "La cantidad de asignación no puede exceder la cantidad de stock" +msgstr "" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" -msgstr "La cantidad debe ser 1 para el stock serializado" +msgstr "" #: order/models.py:1862 msgid "Sales order does not match shipment" -msgstr "La orden de venta no coincide con el envío" +msgstr "La petición de entrega no coincide con el envío" #: order/models.py:1863 plugin/base/barcodes/api.py:481 msgid "Shipment does not match sales order" -msgstr "El envío no coincide con el pedido de venta" +msgstr "El envío no coincide con el pedido de entrega" #: order/models.py:1871 msgid "Line" -msgstr "Línea" +msgstr "" #: order/models.py:1880 msgid "Sales order shipment reference" -msgstr "Referencia del envío del pedido de venta" +msgstr "Referencia del envío del pedido de entrega" #: order/models.py:1893 order/models.py:2200 #: templates/js/translated/return_order.js:722 msgid "Item" -msgstr "Ítem" +msgstr "" #: order/models.py:1894 msgid "Select stock item to allocate" -msgstr "Seleccionar artículo de stock para asignar" +msgstr "" #: order/models.py:1903 msgid "Enter stock allocation quantity" -msgstr "Especificar la cantidad de asignación de stock" +msgstr "" #: order/models.py:1982 msgid "Return Order reference" -msgstr "Referencia de la orden de devolución" +msgstr "" #: order/models.py:1994 msgid "Company from which items are being returned" -msgstr "Empresa de la cual se están devolviendo los artículos" +msgstr "" #: order/models.py:2006 msgid "Return order status" -msgstr "Estado de la orden de devolución" +msgstr "" #: order/models.py:2185 msgid "Only serialized items can be assigned to a Return Order" -msgstr "Sólo los artículos serializados pueden ser asignados a una orden de devolución" +msgstr "" #: order/models.py:2201 msgid "Select item to return from customer" -msgstr "Seleccionar el artículo a devolver del cliente" +msgstr "" #: order/models.py:2207 msgid "Received Date" -msgstr "Fecha de recepción" +msgstr "" #: order/models.py:2208 msgid "The date this this return item was received" -msgstr "La fecha en la que se recibió este artículo de devolución" +msgstr "" #: order/models.py:2219 templates/js/translated/return_order.js:733 #: templates/js/translated/table_filters.js:123 msgid "Outcome" -msgstr "Resultado" +msgstr "" #: order/models.py:2220 msgid "Outcome for this line item" -msgstr "Salida para esta partida" +msgstr "" #: order/models.py:2227 msgid "Cost associated with return or repair for this line item" -msgstr "Costo asociado con la devolución o reparación para esta partida" +msgstr "" -#: order/serializers.py:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" -msgstr "El pedido no puede ser cancelado" +msgstr "" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" -msgstr "Permitir cerrar el pedido con partidas incompletas" +msgstr "" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" -msgstr "El pedido tiene partidas incompletas" +msgstr "" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" -msgstr "El pedido no está abierto" +msgstr "" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "Moneda del precio de compra" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" -msgstr "Debe especificar la parte del proveedor" +msgstr "" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" -msgstr "La orden de compra debe especificarse" +msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" -msgstr "El proveedor debe coincidir con la orden de compra" +msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" -msgstr "La orden de compra debe coincidir con el proveedor" +msgstr "" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" -msgstr "Partida" +msgstr "" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" -msgstr "La partida no coincide con la orden de compra" +msgstr "" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" -msgstr "Seleccione la ubicación de destino para los artículos recibidos" +msgstr "" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" -msgstr "Introduzca el código de lote para los artículos de almacén entrantes" +msgstr "" -#: order/serializers.py:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" -msgstr "Introduzca números de serie para artículos de almacén entrantes" +msgstr "" -#: order/serializers.py:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" -msgstr "Código de barras" +msgstr "" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" -msgstr "Código de barras escaneado" +msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" -msgstr "Código de barras en uso" +msgstr "" -#: order/serializers.py:610 +#: order/serializers.py:632 msgid "An integer quantity must be provided for trackable parts" -msgstr "Debe proporcionarse una cantidad entera para las partes rastreables" +msgstr "" -#: order/serializers.py:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" -msgstr "Se deben proporcionar las partidas" +msgstr "" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" -msgstr "Se requiere ubicación de destino" +msgstr "" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" -msgstr "Los valores del código de barras deben ser únicos" +msgstr "" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "Moneda del precio de venta" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" -msgstr "No se proporcionaron detalles de envío" +msgstr "" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" -msgstr "La partida no está asociada con este pedido" +msgstr "" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" -msgstr "La cantidad debe ser positiva" +msgstr "" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" -msgstr "Introduzca números de serie para asignar" +msgstr "" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" -msgstr "El envío ya ha sido enviado" +msgstr "" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" -msgstr "El envío no está asociado con este pedido" +msgstr "" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" -msgstr "No se han encontrado coincidencias para los siguientes números de serie" +msgstr "" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" -msgstr "Los siguientes números de serie ya están asignados" +msgstr "" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" -msgstr "Partida de orden de devolución" +msgstr "" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" -msgstr "La partida no coincide con la orden de devolución" +msgstr "" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" -msgstr "La partida ya ha sido recibida" +msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1677 msgid "Items can only be received against orders which are in progress" -msgstr "Los artículos sólo pueden ser recibidos contra pedidos en curso" +msgstr "" -#: order/serializers.py:1733 +#: order/serializers.py:1755 msgid "Line price currency" -msgstr "Moneda de precio de línea" +msgstr "" #: order/tasks.py:25 msgid "Overdue Purchase Order" -msgstr "Orden de compra atrasada" +msgstr "" #: order/tasks.py:30 #, python-brace-format msgid "Purchase order {po} is now overdue" -msgstr "La orden de compra {po} está atrasada" +msgstr "" #: order/tasks.py:75 msgid "Overdue Sales Order" -msgstr "Orden de venta atrasada" +msgstr "Pedidos de Entrega Atrasados" #: order/tasks.py:80 #, python-brace-format msgid "Sales order {so} is now overdue" -msgstr "La orden de venta {so} está atrasada" +msgstr "La petición de entrega {so} está vencida" #: order/templates/order/order_base.html:51 msgid "Print purchase order report" -msgstr "Imprimir informe de orden de compra" +msgstr "" #: order/templates/order/order_base.html:53 #: order/templates/order/return_order_base.html:62 @@ -5407,11 +5443,11 @@ msgstr "Editar pedido" #: order/templates/order/return_order_base.html:78 #: order/templates/order/sales_order_base.html:77 msgid "Cancel order" -msgstr "Cancelar orden" +msgstr "Cancelar pedido" #: order/templates/order/order_base.html:73 msgid "Duplicate order" -msgstr "Duplicar orden" +msgstr "" #: order/templates/order/order_base.html:79 #: order/templates/order/order_base.html:80 @@ -5420,49 +5456,49 @@ msgstr "Duplicar orden" #: order/templates/order/sales_order_base.html:83 #: order/templates/order/sales_order_base.html:84 msgid "Issue Order" -msgstr "Emitir pedido" +msgstr "" #: order/templates/order/order_base.html:83 #: order/templates/order/return_order_base.html:86 msgid "Mark order as complete" -msgstr "Marcar pedido como completado" +msgstr "" #: order/templates/order/order_base.html:84 #: order/templates/order/return_order_base.html:87 #: order/templates/order/sales_order_base.html:93 msgid "Complete Order" -msgstr "Completar pedido" +msgstr "Completar Pedido" #: order/templates/order/order_base.html:91 msgid "Supplier part thumbnail" -msgstr "Miniatura de la parte del proveedor" +msgstr "" #: order/templates/order/order_base.html:106 #: order/templates/order/return_order_base.html:101 #: order/templates/order/sales_order_base.html:106 msgid "Order Reference" -msgstr "Referencia del pedido" +msgstr "Referencia del Pedido" #: order/templates/order/order_base.html:111 #: order/templates/order/return_order_base.html:106 #: order/templates/order/sales_order_base.html:111 msgid "Order Description" -msgstr "Descripción del pedido" +msgstr "Descripción del Pedido" #: order/templates/order/order_base.html:118 #: order/templates/order/return_order_base.html:113 #: order/templates/order/sales_order_base.html:118 msgid "Order Status" -msgstr "Estado del pedido" +msgstr "Estado del Pedido" #: order/templates/order/order_base.html:141 msgid "No suppplier information available" -msgstr "No hay información disponible sobre el proveedor" +msgstr "" #: order/templates/order/order_base.html:154 #: order/templates/order/sales_order_base.html:157 msgid "Completed Line Items" -msgstr "Partidas completadas" +msgstr "Artículos de Línea Completados" #: order/templates/order/order_base.html:160 #: order/templates/order/sales_order_base.html:163 @@ -5474,17 +5510,17 @@ msgstr "Incompleto" #: order/templates/order/return_order_base.html:157 #: report/templates/report/inventree_build_order_base.html:121 msgid "Issued" -msgstr "Emitido" +msgstr "" #: order/templates/order/order_base.html:224 msgid "Total cost" -msgstr "Costo total" +msgstr "Coste total" #: order/templates/order/order_base.html:228 #: order/templates/order/return_order_base.html:199 #: order/templates/order/sales_order_base.html:239 msgid "Total cost could not be calculated" -msgstr "No se ha podido calcular el costo total" +msgstr "No se ha podido calcular el coste total" #: order/templates/order/order_base.html:318 msgid "Purchase Order QR Code" @@ -5506,7 +5542,7 @@ msgstr "Faltan selecciones para las siguientes columnas requeridas" #: 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 "Se han encontrado selecciones duplicadas, vea a continuación. Arreglarlas y vuelva a intentar enviarlas." +msgstr "" #: order/templates/order/order_wizard/match_fields.html:29 #: order/templates/order/order_wizard/match_parts.html:21 @@ -5514,28 +5550,28 @@ msgstr "Se han encontrado selecciones duplicadas, vea a continuación. Arreglarl #: part/templates/part/import_wizard/match_references.html:21 #: templates/patterns/wizard/match_fields.html:28 msgid "Submit Selections" -msgstr "Enviar selecciones" +msgstr "Enviar Selecciones" #: 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 "Campos de archivo" +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 "Eliminar columna" +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 "Duplicar selección" +msgstr "" #: order/templates/order/order_wizard/match_fields.html:71 #: order/templates/order/order_wizard/match_parts.html:52 @@ -5568,7 +5604,7 @@ msgstr "Fila" #: order/templates/order/order_wizard/match_parts.html:29 msgid "Select Supplier Part" -msgstr "Seleccionar Parte de Proveedor" +msgstr "Seleccionar Pieza del Proveedor" #: order/templates/order/order_wizard/po_upload.html:8 msgid "Return to Orders" @@ -5576,11 +5612,11 @@ msgstr "Volver a Pedidos" #: order/templates/order/order_wizard/po_upload.html:13 msgid "Upload File for Purchase Order" -msgstr "Subir archivo para orden de compra" +msgstr "Subir Archivo para Orden de Compra" #: order/templates/order/order_wizard/po_upload.html:14 msgid "Order is already processed. Files cannot be uploaded." -msgstr "El pedido ya ha sido procesado. Los archivos no se pueden cargar." +msgstr "" #: order/templates/order/order_wizard/po_upload.html:27 #: part/templates/part/import_wizard/ajax_part_upload.html:10 @@ -5597,15 +5633,15 @@ msgstr "Paso %(step)s de %(count)s" #: report/templates/report/inventree_return_order_report_base.html:19 #: report/templates/report/inventree_so_report_base.html:22 msgid "Line Items" -msgstr "Partidas" +msgstr "Artículos de Línea" #: order/templates/order/po_sidebar.html:7 msgid "Received Stock" -msgstr "Stock Recibido" +msgstr "" #: order/templates/order/purchase_order_detail.html:18 msgid "Purchase Order Items" -msgstr "Comprar artículos de orden" +msgstr "Artículos de la Orden de Compra" #: order/templates/order/purchase_order_detail.html:27 #: order/templates/order/return_order_detail.html:24 @@ -5614,14 +5650,14 @@ msgstr "Comprar artículos de orden" #: templates/js/translated/return_order.js:459 #: templates/js/translated/sales_order.js:237 msgid "Add Line Item" -msgstr "Añadir partida" +msgstr "Añadir Artículo de Línea" #: 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 "Recibir partidas" +msgstr "" #: order/templates/order/purchase_order_detail.html:50 #: order/templates/order/return_order_detail.html:45 @@ -5633,26 +5669,26 @@ msgstr "Líneas Adicionales" #: order/templates/order/return_order_detail.html:51 #: order/templates/order/sales_order_detail.html:47 msgid "Add Extra Line" -msgstr "Añadir línea adicional" +msgstr "Añadir Línea Adicional" #: order/templates/order/purchase_order_detail.html:74 msgid "Received Items" -msgstr "Articulos Recibidos" +msgstr "Artículos Recibidos" #: 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 "Notas del pedido" +msgstr "Notas del Pedido" #: order/templates/order/return_order_base.html:18 #: order/templates/order/sales_order_base.html:18 msgid "Customer logo thumbnail" -msgstr "Miniatura del logo del cliente" +msgstr "" #: order/templates/order/return_order_base.html:60 msgid "Print return order report" -msgstr "Imprimir informe de orden de devolución" +msgstr "" #: order/templates/order/return_order_base.html:64 #: order/templates/order/sales_order_base.html:64 @@ -5664,7 +5700,7 @@ msgstr "Imprimir lista de empaquetado" #: templates/js/translated/return_order.js:309 #: templates/js/translated/sales_order.js:797 msgid "Customer Reference" -msgstr "Referencia del cliente" +msgstr "Referencia del Cliente" #: order/templates/order/return_order_base.html:195 #: order/templates/order/sales_order_base.html:235 @@ -5677,7 +5713,7 @@ msgstr "Referencia del cliente" #: templates/js/translated/return_order.js:381 #: templates/js/translated/sales_order.js:855 msgid "Total Cost" -msgstr "Costo Total" +msgstr "" #: order/templates/order/return_order_base.html:263 msgid "Return Order QR Code" @@ -5689,31 +5725,31 @@ msgstr "" #: order/templates/order/return_order_sidebar.html:5 msgid "Order Details" -msgstr "Detalles del pedido" +msgstr "" #: order/templates/order/sales_order_base.html:60 msgid "Print sales order report" -msgstr "Imprimir informe de orden de venta" +msgstr "Imprimir informe de pedidos de entrega" #: order/templates/order/sales_order_base.html:88 #: order/templates/order/sales_order_base.html:89 msgid "Ship Items" -msgstr "Enviar artículos" +msgstr "" #: order/templates/order/sales_order_base.html:92 #: templates/js/translated/sales_order.js:484 msgid "Complete Sales Order" -msgstr "Ordenes de venta completas" +msgstr "Completar Pedido de Entrega" #: order/templates/order/sales_order_base.html:131 msgid "This Sales Order has not been fully allocated" -msgstr "Esta orden de venta no ha sido completamente asignada" +msgstr "Este pedido de entrega no ha sido completamente asignado" #: order/templates/order/sales_order_base.html:169 #: order/templates/order/sales_order_detail.html:99 #: order/templates/order/so_sidebar.html:11 msgid "Completed Shipments" -msgstr "Envíos completados" +msgstr "Envíos Completados" #: order/templates/order/sales_order_base.html:312 msgid "Sales Order QR Code" @@ -5725,15 +5761,15 @@ msgstr "" #: order/templates/order/sales_order_detail.html:18 msgid "Sales Order Items" -msgstr "Artículos de Pedidos de Venta" +msgstr "Artículos de Pedidos de Entrega" #: order/templates/order/sales_order_detail.html:67 #: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 msgid "Pending Shipments" -msgstr "Envíos pendientes" +msgstr "Envíos Pendientes" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "Acciones" @@ -5743,15 +5779,15 @@ msgstr "Nuevo Envío" #: order/views.py:120 msgid "Match Supplier Parts" -msgstr "Coincidir partes de proveedor" +msgstr "" #: order/views.py:406 msgid "Sales order not found" -msgstr "Orden de venta no encontrada" +msgstr "Pedido de entrega no encontrado" #: order/views.py:412 msgid "Price not found" -msgstr "Precio no encontrado" +msgstr "" #: order/views.py:415 #, python-brace-format @@ -5763,57 +5799,57 @@ msgstr "Actualizado el precio unitario de {part} a {price}" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "Actualizado el precio unitario de {part} a {price} y la cantidad a {qty}" -#: part/admin.py:39 part/admin.py:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" -msgstr "ID de Parte" +msgstr "ID de Pieza" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" -msgstr "Nombre de parte" +msgstr "Nombre de la Pieza" #: part/admin.py:45 part/stocktake.py:220 msgid "Part Description" -msgstr "Descripción de parte" +msgstr "Descripción de la Pieza" #: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 -#: templates/js/translated/stock.js:1999 +#: templates/js/translated/stock.js:2035 msgid "IPN" -msgstr "IPN" +msgstr "" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" -msgstr "Revisión" +msgstr "" #: part/admin.py:53 part/admin.py:317 part/models.py:885 #: part/templates/part/category.html:94 part/templates/part/part_base.html:298 msgid "Keywords" -msgstr "Palabras claves" +msgstr "" #: part/admin.py:60 msgid "Part Image" -msgstr "Imagen de parte" +msgstr "" #: part/admin.py:63 part/admin.py:300 part/stocktake.py:221 msgid "Category ID" -msgstr "ID de Categoría" +msgstr "" #: part/admin.py:67 part/admin.py:302 part/stocktake.py:222 msgid "Category Name" -msgstr "Nombre de categoría" +msgstr "" #: part/admin.py:71 part/admin.py:314 msgid "Default Location ID" -msgstr "ID de ubicación predeterminada" +msgstr "" #: part/admin.py:76 msgid "Default Supplier ID" -msgstr "ID de proveedor predeterminado" +msgstr "" #: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177 msgid "Variant Of" @@ -5821,7 +5857,7 @@ msgstr "Variante de" #: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203 msgid "Minimum Stock" -msgstr "Stock mínimo" +msgstr "" #: part/admin.py:126 part/templates/part/part_base.html:197 #: templates/js/translated/company.js:1679 @@ -5831,75 +5867,75 @@ msgstr "En Stock" #: part/admin.py:138 part/templates/part/part_sidebar.html:27 msgid "Used In" -msgstr "Usado en" +msgstr "Usado En" #: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 #: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 msgid "Building" -msgstr "En construcción" +msgstr "" #: part/admin.py:155 part/models.py:3079 part/models.py:3093 #: templates/js/translated/part.js:969 msgid "Minimum Cost" -msgstr "Costo mínimo" +msgstr "" #: part/admin.py:158 part/models.py:3086 part/models.py:3100 #: templates/js/translated/part.js:979 msgid "Maximum Cost" -msgstr "Costo máximo" +msgstr "" #: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211 msgid "Parent ID" -msgstr "Identificador de la clase o especie padre" +msgstr "" #: part/admin.py:310 part/admin.py:400 stock/admin.py:62 msgid "Parent Name" -msgstr "Nombre del padre" +msgstr "" #: part/admin.py:318 part/templates/part/category.html:88 #: part/templates/part/category.html:101 msgid "Category Path" -msgstr "Ruta de Categoría" +msgstr "Ruta de la Categoría" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 +#: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 #: templates/InvenTree/settings/sidebar.html:47 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:190 msgid "Parts" -msgstr "Partes" +msgstr "Piezas" #: part/admin.py:384 msgid "BOM Level" -msgstr "Nivel de BOM" +msgstr "" #: part/admin.py:387 msgid "BOM Item ID" -msgstr "ID de artículo de BOM" +msgstr "" #: part/admin.py:397 msgid "Parent IPN" -msgstr "IPN del padre" +msgstr "" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3897 msgid "Part IPN" -msgstr "IPN de la parte" +msgstr "IPN de la Pieza" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" -msgstr "Precio mínimo" +msgstr "" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" -msgstr "Precio máximo" +msgstr "" #: part/api.py:118 msgid "Starred" @@ -5947,11 +5983,11 @@ msgstr "" #: part/api.py:622 msgid "Incoming Purchase Order" -msgstr "Orden de compra entrante" +msgstr "" #: part/api.py:640 msgid "Outgoing Sales Order" -msgstr "Orden de venta saliente" +msgstr "Pedidos de Entrega Salientes" #: part/api.py:656 msgid "Stock produced by Build Order" @@ -5963,18 +5999,18 @@ msgstr "" #: part/api.py:887 msgid "Valid" -msgstr "Válido" +msgstr "" #: part/api.py:888 msgid "Validate entire Bill of Materials" -msgstr "Validación de Lista de Materiales" +msgstr "" #: part/api.py:894 msgid "This option must be selected" -msgstr "Esta opción debe ser seleccionada" +msgstr "" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5982,43 +6018,49 @@ msgstr "Esta opción debe ser seleccionada" msgid "Category" msgstr "Categoría" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" -msgstr "Ubicación Predeterminada" +msgstr "" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" -msgstr "Inventario Total" +msgstr "" #: part/forms.py:49 msgid "Input quantity for price calculation" -msgstr "Cantidad de entrada para el cálculo del precio" +msgstr "" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" -msgstr "Categoría de parte" +msgstr "Categoría de Pieza" #: part/models.py:82 part/templates/part/category.html:136 #: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 #: users/models.py:189 msgid "Part Categories" -msgstr "Categorías de parte" +msgstr "Categorías de Piezas" #: part/models.py:101 msgid "Default location for parts in this category" -msgstr "Ubicación predeterminada para partes de esta categoría" +msgstr "Ubicación predeterminada para piezas de esta categoría" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 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 "Estructural" +msgstr "" #: part/models.py:108 msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." -msgstr "Las partes no pueden asignarse directamente a una categoría estructural, pero pueden asignarse a categorías hijas." +msgstr "Las piezas no pueden asignarse directamente a una categoría estructural, pero pueden asignarse a categorías hijas." #: part/models.py:117 msgid "Default keywords" @@ -6026,7 +6068,7 @@ msgstr "Palabras clave predeterminadas" #: part/models.py:118 msgid "Default keywords for parts in this category" -msgstr "Palabras clave por defecto para partes en esta categoría" +msgstr "Palabras clave por defecto para piezas en esta categoría" #: part/models.py:124 stock/models.py:89 stock/models.py:148 #: templates/InvenTree/settings/settings_staff_js.html:456 @@ -6039,11 +6081,11 @@ msgstr "Icono (opcional)" #: part/models.py:147 msgid "You cannot make this part category structural because some parts are already assigned to it!" -msgstr "¡No puedes hacer que esta categoría de partes sea estructural porque algunas partes ya están asignadas!" +msgstr "¡No puedes hacer que esta categoría de piezas sea estructural porque algunas piezas ya están asignadas!" #: part/models.py:483 msgid "Invalid choice for parent part" -msgstr "Opción no válida para la parte principal" +msgstr "Opción no válida para la pieza principal" #: part/models.py:531 part/models.py:538 #, python-brace-format @@ -6062,131 +6104,131 @@ msgstr "" #: part/models.py:695 msgid "Stock item with this serial number already exists" -msgstr "Ya existe un artículo de almacén con este número de serie" +msgstr "" #: part/models.py:800 msgid "Duplicate IPN not allowed in part settings" -msgstr "IPN duplicado no permitido en la configuración de partes" +msgstr "IPN duplicado no permitido en la configuración de piezas" #: part/models.py:810 msgid "Part with this Name, IPN and Revision already exists." -msgstr "Parte con este nombre, IPN y revisión ya existe." +msgstr "" #: part/models.py:825 msgid "Parts cannot be assigned to structural part categories!" -msgstr "¡No se pueden asignar partes a las categorías de partes estructurales!" +msgstr "¡No se pueden asignar piezas a las categorías de piezas estructurales!" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3896 msgid "Part name" -msgstr "Nombre de la parte" +msgstr "Nombre de la pieza" #: part/models.py:859 msgid "Is Template" -msgstr "Es plantilla" +msgstr "" #: part/models.py:860 msgid "Is this part a template part?" -msgstr "¿Es esta parte una parte de la plantilla?" +msgstr "¿Es esta pieza una 'pieza plantilla'?" #: part/models.py:870 msgid "Is this part a variant of another part?" -msgstr "¿Es esta parte una variante de otra parte?" +msgstr "¿Es esta pieza una variante de otra pieza?" #: part/models.py:878 msgid "Part description (optional)" -msgstr "Descripción de parte (opcional)" +msgstr "" #: part/models.py:886 msgid "Part keywords to improve visibility in search results" -msgstr "Palabras clave para mejorar la visibilidad en los resultados de búsqueda" +msgstr "Palabras clave para mejorar la visibilidad en los resultados de búsqueda de piezas" #: part/models.py:896 msgid "Part category" -msgstr "Categoría de parte" +msgstr "Categoría de pieza" #: part/models.py:904 msgid "Internal Part Number" -msgstr "Número de parte interna" +msgstr "'Part Number' Interno (IPN)" #: part/models.py:911 msgid "Part revision or version number" -msgstr "Revisión de parte o número de versión" +msgstr "Revisión de la pieza o número de versión" #: part/models.py:936 msgid "Where is this item normally stored?" -msgstr "¿Dónde se almacena este artículo normalmente?" +msgstr "" #: part/models.py:982 part/templates/part/part_base.html:376 msgid "Default Supplier" -msgstr "Proveedor por defecto" +msgstr "" #: part/models.py:983 msgid "Default supplier part" -msgstr "Parte de proveedor predeterminada" +msgstr "" #: part/models.py:990 msgid "Default Expiry" -msgstr "Expiración por defecto" +msgstr "" #: part/models.py:991 msgid "Expiry time (in days) for stock items of this part" -msgstr "Tiempo de expiración (en días) para los artículos de stock de esta parte" +msgstr "Tiempo de expiración (en días) para los artículos de stock de esta pieza" #: part/models.py:1000 msgid "Minimum allowed stock level" -msgstr "Nivel mínimo de stock permitido" +msgstr "" #: part/models.py:1009 msgid "Units of measure for this part" -msgstr "Unidades de medida para esta parte" +msgstr "" #: part/models.py:1016 msgid "Can this part be built from other parts?" -msgstr "¿Se puede construir esta parte a partir de otras partes?" +msgstr "" #: part/models.py:1022 msgid "Can this part be used to build other parts?" -msgstr "¿Se puede utilizar esta parte para construir otras partes?" +msgstr "" #: part/models.py:1028 msgid "Does this part have tracking for unique items?" -msgstr "¿Esta parte tiene seguimiento de objetos únicos?" +msgstr "¿Esta pieza tiene seguimiento de artículos únicos?" #: part/models.py:1034 msgid "Can this part be purchased from external suppliers?" -msgstr "¿Se puede comprar esta parte a proveedores externos?" +msgstr "¿Se puede comprar esta pieza a proveedores externos?" #: part/models.py:1040 msgid "Can this part be sold to customers?" -msgstr "¿Se puede vender esta parte a los clientes?" +msgstr "¿Se puede entregar esta pieza a los clientes?" #: part/models.py:1044 msgid "Is this part active?" -msgstr "¿Está activa esta parte?" +msgstr "" #: part/models.py:1050 msgid "Is this a virtual part, such as a software product or license?" -msgstr "¿Es ésta una parte virtual, como un producto de software o una licencia?" +msgstr "" #: part/models.py:1056 msgid "BOM checksum" -msgstr "Suma de verificación de BOM" +msgstr "" #: part/models.py:1057 msgid "Stored BOM checksum" -msgstr "Suma de verificación de BOM almacenada" +msgstr "" #: part/models.py:1065 msgid "BOM checked by" -msgstr "BOM comprobado por" +msgstr "" #: part/models.py:1070 msgid "BOM checked date" -msgstr "Fecha BOM comprobada" +msgstr "" #: part/models.py:1086 msgid "Creation User" -msgstr "Creación de Usuario" +msgstr "" #: part/models.py:1096 msgid "Owner responsible for this part" @@ -6196,11 +6238,11 @@ msgstr "" #: stock/templates/stock/item_base.html:451 #: templates/js/translated/part.js:2471 msgid "Last Stocktake" -msgstr "Último inventario" +msgstr "Último Inventario" #: part/models.py:1974 msgid "Sell multiple" -msgstr "Vender múltiples" +msgstr "Entrega múltiple" #: part/models.py:2993 msgid "Currency used to cache pricing calculations" @@ -6208,87 +6250,87 @@ msgstr "Moneda utilizada para almacenar en caché los cálculos de precios" #: part/models.py:3009 msgid "Minimum BOM Cost" -msgstr "Costo mínimo de BOM" +msgstr "" #: part/models.py:3010 msgid "Minimum cost of component parts" -msgstr "Costo mínimo de partes de componentes" +msgstr "" #: part/models.py:3016 msgid "Maximum BOM Cost" -msgstr "Costo máximo de BOM" +msgstr "" #: part/models.py:3017 msgid "Maximum cost of component parts" -msgstr "Costo máximo de partes de componentes" +msgstr "" #: part/models.py:3023 msgid "Minimum Purchase Cost" -msgstr "Costo mínimo de compra" +msgstr "" #: part/models.py:3024 msgid "Minimum historical purchase cost" -msgstr "Costo histórico mínimo de compra" +msgstr "" #: part/models.py:3030 msgid "Maximum Purchase Cost" -msgstr "Costo máximo de compra" +msgstr "" #: part/models.py:3031 msgid "Maximum historical purchase cost" -msgstr "Costo histórico máximo de compra" +msgstr "" #: part/models.py:3037 msgid "Minimum Internal Price" -msgstr "Precio interno mínimo" +msgstr "" #: part/models.py:3038 msgid "Minimum cost based on internal price breaks" -msgstr "Costo mínimo basado en precios reducidos internos" +msgstr "" #: part/models.py:3044 msgid "Maximum Internal Price" -msgstr "Precio interno máximo" +msgstr "" #: part/models.py:3045 msgid "Maximum cost based on internal price breaks" -msgstr "Costo máximo basado en precios reducidos internos" +msgstr "" #: part/models.py:3051 msgid "Minimum Supplier Price" -msgstr "Precio mínimo de proveedor" +msgstr "" #: part/models.py:3052 msgid "Minimum price of part from external suppliers" -msgstr "Precio mínimo de la parte de proveedores externos" +msgstr "Precio mínimo de la pieza de proveedores externos" #: part/models.py:3058 msgid "Maximum Supplier Price" -msgstr "Precio máximo de proveedor" +msgstr "" #: part/models.py:3059 msgid "Maximum price of part from external suppliers" -msgstr "Precio máximo de la parte de proveedores externos" +msgstr "Precio máximo de la pieza de proveedores externos" #: part/models.py:3065 msgid "Minimum Variant Cost" -msgstr "Costo mínimo de variante" +msgstr "" #: part/models.py:3066 msgid "Calculated minimum cost of variant parts" -msgstr "Costo mínimo calculado de las partes variantes" +msgstr "" #: part/models.py:3072 msgid "Maximum Variant Cost" -msgstr "Costo máximo de variante" +msgstr "" #: part/models.py:3073 msgid "Calculated maximum cost of variant parts" -msgstr "Costo máximo calculado de las partes variantes" +msgstr "" #: part/models.py:3080 msgid "Override minimum cost" -msgstr "Anular el costo mínimo" +msgstr "" #: part/models.py:3087 msgid "Override maximum cost" @@ -6296,7 +6338,7 @@ msgstr "" #: part/models.py:3094 msgid "Calculated overall minimum cost" -msgstr "Costo mínimo general calculado" +msgstr "" #: part/models.py:3101 msgid "Calculated overall maximum cost" @@ -6304,31 +6346,31 @@ msgstr "" #: part/models.py:3107 msgid "Minimum Sale Price" -msgstr "Precio de venta mínimo" +msgstr "" #: part/models.py:3108 msgid "Minimum sale price based on price breaks" -msgstr "Precio de venta mínimo basado en precios reducidos" +msgstr "" #: part/models.py:3114 msgid "Maximum Sale Price" -msgstr "Precio de venta máximo" +msgstr "" #: part/models.py:3115 msgid "Maximum sale price based on price breaks" -msgstr "Precio de venta máximo basado en precios reducidos" +msgstr "" #: part/models.py:3121 msgid "Minimum Sale Cost" -msgstr "Costo de venta mínimo" +msgstr "" #: part/models.py:3122 msgid "Minimum historical sale price" -msgstr "Precio de venta mínimo histórico" +msgstr "" #: part/models.py:3128 msgid "Maximum Sale Cost" -msgstr "Costo de Venta Máximo" +msgstr "" #: part/models.py:3129 msgid "Maximum historical sale price" @@ -6340,7 +6382,7 @@ msgstr "" #: part/models.py:3153 msgid "Item Count" -msgstr "Número de artículos" +msgstr "" #: part/models.py:3154 msgid "Number of individual stock entries at time of stocktake" @@ -6358,7 +6400,7 @@ msgstr "" #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1732 -#: templates/js/translated/stock.js:2785 +#: templates/js/translated/stock.js:2821 msgid "Date" msgstr "Fecha" @@ -6368,7 +6410,7 @@ msgstr "" #: part/models.py:3175 msgid "Additional notes" -msgstr "Notas adicionales" +msgstr "" #: part/models.py:3185 msgid "User who performed this stocktake" @@ -6376,11 +6418,11 @@ msgstr "" #: part/models.py:3191 msgid "Minimum Stock Cost" -msgstr "Costo de Stock Mínimo" +msgstr "" #: part/models.py:3192 msgid "Estimated minimum cost of stock on hand" -msgstr "Costo mínimo estimado del stock disponible" +msgstr "" #: part/models.py:3198 msgid "Maximum Stock Cost" @@ -6392,7 +6434,7 @@ msgstr "" #: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529 msgid "Report" -msgstr "Informe" +msgstr "" #: part/models.py:3256 msgid "Stocktake report file (generated internally)" @@ -6400,7 +6442,7 @@ msgstr "" #: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536 msgid "Part Count" -msgstr "Número de partes" +msgstr "" #: part/models.py:3262 msgid "Number of parts covered by stocktake" @@ -6410,588 +6452,604 @@ msgstr "" msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 msgid "Test templates can only be created for trackable parts" -msgstr "Las plantillas de prueba sólo pueden ser creadas para partes rastreables" +msgstr "" -#: part/models.py:3448 -msgid "Test with this name already exists for this part" -msgstr "Ya existe una prueba con este nombre para esta parte" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" +msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" -msgstr "Nombre de prueba" +msgstr "" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" -msgstr "Introduzca un nombre para la prueba" +msgstr "" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "Descripción de prueba" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "Introduce la descripción para esta prueba" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" -msgstr "Requerido" +msgstr "" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" -msgstr "¿Es necesario pasar esta prueba?" +msgstr "" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" -msgstr "Requiere valor" +msgstr "" -#: part/models.py:3496 +#: part/models.py:3505 msgid "Does this test require a value when adding a test result?" -msgstr "¿Esta prueba requiere un valor al agregar un resultado de la prueba?" +msgstr "" -#: part/models.py:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" -msgstr "Adjunto obligatorio" +msgstr "" -#: part/models.py:3503 +#: part/models.py:3512 msgid "Does this test require a file attachment when adding a test result?" msgstr "¿Esta prueba requiere un archivo adjunto al agregar un resultado de la prueba?" -#: part/models.py:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" -msgstr "El nombre de parámetro en la plantilla tiene que ser único" +msgstr "" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" -msgstr "Nombre de Parámetro" +msgstr "" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" -msgstr "" +msgstr "Descripción del parámetro" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" -msgstr "Casilla de verificación" +msgstr "" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" -msgstr "¿Es este parámetro una casilla de verificación?" +msgstr "" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" -msgstr "Opciones" +msgstr "" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" -msgstr "Opciones válidas para este parámetro (separados por comas)" +msgstr "" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" -msgstr "Opción inválida para el valor del parámetro" +msgstr "" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" -msgstr "Parte principal" +msgstr "Pieza Superior" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" -msgstr "Plantilla de parámetro" +msgstr "" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" -msgstr "Datos" +msgstr "" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" -msgstr "Valor del parámetro" +msgstr "" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" -msgstr "Valor predeterminado" +msgstr "" -#: part/models.py:3847 +#: part/models.py:3856 msgid "Default Parameter Value" -msgstr "Valor de parámetro por defecto" +msgstr "" -#: part/models.py:3885 +#: part/models.py:3894 msgid "Part ID or part name" -msgstr "ID de parte o nombre de parte" +msgstr "" -#: part/models.py:3886 +#: part/models.py:3895 msgid "Unique part ID value" -msgstr "Valor de ID de parte única" +msgstr "" -#: part/models.py:3888 +#: part/models.py:3897 msgid "Part IPN value" -msgstr "Valor IPN de parte" +msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "Level" -msgstr "Nivel" +msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "BOM level" -msgstr "Nivel de BOM" +msgstr "" -#: part/models.py:3979 +#: part/models.py:3988 msgid "Select parent part" -msgstr "Seleccionar parte principal" +msgstr "Seleccionar pieza superior" -#: part/models.py:3989 +#: part/models.py:3998 msgid "Sub part" -msgstr "Sub parte" +msgstr "" -#: part/models.py:3990 +#: part/models.py:3999 msgid "Select part to be used in BOM" -msgstr "Seleccionar parte a utilizar en BOM" +msgstr "" -#: part/models.py:4001 +#: part/models.py:4010 msgid "BOM quantity for this BOM item" -msgstr "Cantidad del artículo en BOM" +msgstr "" -#: part/models.py:4007 +#: part/models.py:4016 msgid "This BOM item is optional" -msgstr "Este artículo BOM es opcional" +msgstr "" -#: part/models.py:4013 +#: part/models.py:4022 msgid "This BOM item is consumable (it is not tracked in build orders)" -msgstr "Este artículo de BOM es consumible (no está rastreado en órdenes de construcción)" +msgstr "" -#: part/models.py:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4029 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Exceso" -#: part/models.py:4021 +#: part/models.py:4030 msgid "Estimated build wastage quantity (absolute or percentage)" -msgstr "Cantidad estimada de desperdicio de construcción (absoluta o porcentaje)" +msgstr "" -#: part/models.py:4028 +#: part/models.py:4037 msgid "BOM item reference" -msgstr "Referencia de artículo de BOM" +msgstr "" -#: part/models.py:4036 +#: part/models.py:4045 msgid "BOM item notes" -msgstr "Notas del artículo de BOM" +msgstr "" -#: part/models.py:4042 +#: part/models.py:4051 msgid "Checksum" -msgstr "Suma de verificación" +msgstr "" -#: part/models.py:4043 +#: part/models.py:4052 msgid "BOM line checksum" -msgstr "Suma de verificación de línea de BOM" +msgstr "" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4057 templates/js/translated/table_filters.js:174 msgid "Validated" -msgstr "Validado" +msgstr "" -#: part/models.py:4049 +#: part/models.py:4058 msgid "This BOM item has been validated" -msgstr "Este artículo de BOM ha sido validado" +msgstr "" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4063 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:4055 +#: part/models.py:4064 msgid "This BOM item is inherited by BOMs for variant parts" -msgstr "Este artículo BOM es heredado por BOMs para partes variantes" +msgstr "" -#: part/models.py:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4069 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" -msgstr "Permitir variantes" +msgstr "Permitir Variantes" -#: part/models.py:4061 +#: part/models.py:4070 msgid "Stock items for variant parts can be used for this BOM item" -msgstr "Artículos de stock para partes variantes pueden ser usados para este artículo BOM" +msgstr "" -#: part/models.py:4146 stock/models.py:649 +#: part/models.py:4155 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" -msgstr "La cantidad debe ser un valor entero para las partes rastreables" +msgstr "" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4165 part/models.py:4167 msgid "Sub part must be specified" -msgstr "Debe especificar la subparte" +msgstr "" -#: part/models.py:4298 +#: part/models.py:4307 msgid "BOM Item Substitute" -msgstr "Ítem de BOM sustituto" +msgstr "" -#: part/models.py:4319 +#: part/models.py:4328 msgid "Substitute part cannot be the same as the master part" -msgstr "La parte sustituta no puede ser la misma que la parte principal" +msgstr "" -#: part/models.py:4332 +#: part/models.py:4341 msgid "Parent BOM item" -msgstr "Artículo BOM superior" +msgstr "" -#: part/models.py:4340 +#: part/models.py:4349 msgid "Substitute part" -msgstr "Sustituir parte" - -#: part/models.py:4356 -msgid "Part 1" -msgstr "Parte 1" - -#: part/models.py:4364 -msgid "Part 2" -msgstr "Parte 2" +msgstr "" #: part/models.py:4365 -msgid "Select Related Part" -msgstr "Seleccionar parte relacionada" +msgid "Part 1" +msgstr "" -#: part/models.py:4384 +#: part/models.py:4373 +msgid "Part 2" +msgstr "" + +#: part/models.py:4374 +msgid "Select Related Part" +msgstr "" + +#: part/models.py:4393 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4389 +#: part/models.py:4398 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "Subcategorías" -#: part/serializers.py:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 msgid "Purchase currency of this stock item" -msgstr "Moneda de compra de ítem de stock" +msgstr "Moneda de compra de este artículo de stock" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" -msgstr "Parte original" +msgstr "" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" -msgstr "Seleccione la parte original a duplicar" +msgstr "" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" -msgstr "Copiar Imagen" +msgstr "" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" -msgstr "Copiar imagen desde la parte original" +msgstr "" -#: part/serializers.py:432 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" -msgstr "Copiar BOM" +msgstr "" -#: part/serializers.py:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" -msgstr "Copiar la factura de materiales de la parte original" +msgstr "" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" -msgstr "Copiar Parámetros" +msgstr "" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" -msgstr "Copiar datos del parámetro de la parte original" +msgstr "" -#: part/serializers.py:446 +#: part/serializers.py:464 msgid "Copy Notes" -msgstr "Copiar Notas" +msgstr "" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" -msgstr "Cantidad Inicial de Stock" +msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:480 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" -msgstr "Seleccione proveedor (o déjelo en blanco para saltar)" +msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" -msgstr "Seleccionar fabricante (o dejar en blanco para saltar)" +msgstr "" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" -msgstr "Número de parte del fabricante" +msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" -msgstr "La empresa seleccionada no es un proveedor válido" - -#: part/serializers.py:524 -msgid "Selected company is not a valid manufacturer" -msgstr "La empresa seleccionada no es un fabricante válido" - -#: part/serializers.py:535 -msgid "Manufacturer part matching this MPN already exists" msgstr "" #: part/serializers.py:542 +msgid "Selected company is not a valid manufacturer" +msgstr "" + +#: part/serializers.py:553 +msgid "Manufacturer part matching this MPN already exists" +msgstr "" + +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" -msgstr "Duplicar Parte" +msgstr "Duplicar Pieza" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" -msgstr "Stock Inicial" +msgstr "" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" -msgstr "Crear Parte con cantidad inicial de stock" +msgstr "" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" -msgstr "Información del proveedor" +msgstr "" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" -msgstr "Añadir información inicial del proveedor para esta parte" +msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" -msgstr "Copiar Parámetros de Categoría" +msgstr "" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" -msgstr "Copiar plantillas de parámetro de la categoría de partes seleccionada" +msgstr "" -#: part/serializers.py:844 +#: part/serializers.py:880 msgid "Existing Image" -msgstr "Imagen Existente" +msgstr "" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" -msgstr "El archivo de imagen no existe" +msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1104 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1078 +#: part/serializers.py:1114 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1088 +#: part/serializers.py:1124 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" -msgstr "Generar informe" +msgstr "" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" -msgstr "Actualizar partes" +msgstr "" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" -msgstr "Anular el valor calculado para precio mínimo" +msgstr "" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" -msgstr "Precio mínimo de moneda" +msgstr "" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" -msgstr "Precio máximo de moneda" +msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" -msgstr "Actualizar" +msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" -msgstr "El precio mínimo no debe ser mayor que el precio máximo" +msgstr "" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" -msgstr "El precio máximo no debe ser inferior al precio mínimo" +msgstr "" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" -msgstr "Seleccionar parte de la que copiar BOM" +msgstr "" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" -msgstr "Eliminar Datos Existentes" +msgstr "" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" -msgstr "Eliminar artículos BOM existentes antes de copiar" +msgstr "" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" -msgstr "Incluye Heredado" - -#: part/serializers.py:1647 -msgid "Include BOM items which are inherited from templated parts" -msgstr "Incluye artículos BOM que son heredados de partes con plantillas" - -#: part/serializers.py:1652 -msgid "Skip Invalid Rows" -msgstr "Omitir filas no válidas" - -#: part/serializers.py:1653 -msgid "Enable this option to skip invalid rows" -msgstr "Activar esta opción para omitir filas inválidas" - -#: part/serializers.py:1658 -msgid "Copy Substitute Parts" -msgstr "Copiar partes sustitutas" - -#: part/serializers.py:1659 -msgid "Copy substitute parts when duplicate BOM items" msgstr "" #: part/serializers.py:1693 -msgid "Clear Existing BOM" -msgstr "Limpiar BOM Existente" +msgid "Include BOM items which are inherited from templated parts" +msgstr "" -#: part/serializers.py:1694 +#: part/serializers.py:1698 +msgid "Skip Invalid Rows" +msgstr "Omitir filas no válidas" + +#: part/serializers.py:1699 +msgid "Enable this option to skip invalid rows" +msgstr "Activar esta opción para omitir filas inválidas" + +#: part/serializers.py:1704 +msgid "Copy Substitute Parts" +msgstr "" + +#: part/serializers.py:1705 +msgid "Copy substitute parts when duplicate BOM items" +msgstr "" + +#: part/serializers.py:1739 +msgid "Clear Existing BOM" +msgstr "" + +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" -msgstr "Varios resultados encontrados" +msgstr "" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" -msgstr "No se encontraron partes coincidentes" +msgstr "" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" -msgstr "La parte no está designada como componente" +msgstr "" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" -msgstr "Cantidad no proporcionada" +msgstr "" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" -msgstr "Cantidad no válida" +msgstr "" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" -msgstr "Se requiere al menos un artículo BOM" +msgstr "" #: part/stocktake.py:224 templates/js/translated/part.js:1066 #: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 @@ -7001,11 +7059,11 @@ msgstr "Cantidad Total" #: part/stocktake.py:225 msgid "Total Cost Min" -msgstr "Costo total mínimo" +msgstr "" #: part/stocktake.py:226 msgid "Total Cost Max" -msgstr "Costo total máximo" +msgstr "" #: part/stocktake.py:284 msgid "Stocktake Report Available" @@ -7017,16 +7075,16 @@ msgstr "" #: part/tasks.py:37 msgid "Low stock notification" -msgstr "Notificación por bajo stock" +msgstr "" #: part/tasks.py:39 #, python-brace-format msgid "The available stock for {part.name} has fallen below the configured minimum level" -msgstr "El stock disponible para {part.name} ha caído por debajo del nivel mínimo configurado" +msgstr "" #: part/templates/part/bom.html:6 msgid "You do not have permission to edit the BOM." -msgstr "No tienes permiso para editar la lista de materiales." +msgstr "" #: part/templates/part/bom.html:15 msgid "The BOM this part has been changed, and must be validated" @@ -7047,57 +7105,57 @@ msgstr "" #: part/templates/part/category.html:41 part/templates/part/category.html:45 msgid "You are subscribed to notifications for this category" -msgstr "Estás suscrito a las notificaciones de esta categoría" +msgstr "" #: part/templates/part/category.html:49 msgid "Subscribe to notifications for this category" -msgstr "Suscribirse a las notificaciones de esta categoría" +msgstr "" #: part/templates/part/category.html:55 msgid "Category Actions" -msgstr "Acciones de categoría" +msgstr "" #: part/templates/part/category.html:60 msgid "Edit category" -msgstr "Editar categoría" +msgstr "" #: part/templates/part/category.html:61 msgid "Edit Category" -msgstr "Editar Categoría" +msgstr "" #: part/templates/part/category.html:65 msgid "Delete category" -msgstr "Eliminar categoría" +msgstr "" #: part/templates/part/category.html:66 msgid "Delete Category" -msgstr "Eliminar Categoría" +msgstr "" #: part/templates/part/category.html:102 msgid "Top level part category" -msgstr "Categoría de partes de nivel superior" +msgstr "Categoría de piezas de nivel superior" #: part/templates/part/category.html:127 msgid "Parts (Including subcategories)" -msgstr "Partes (incluyendo subcategorías)" +msgstr "Piezas (incluyendo subcategorías)" #: part/templates/part/category.html:165 msgid "Create new part" -msgstr "Crear nueva parte" +msgstr "Crear nueva pieza" #: part/templates/part/category.html:166 templates/js/translated/bom.js:444 msgid "New Part" -msgstr "Nueva Parte" +msgstr "Nueva Pieza" #: part/templates/part/category.html:192 #: templates/InvenTree/settings/part_parameters.html:7 #: templates/InvenTree/settings/sidebar.html:49 msgid "Part Parameters" -msgstr "Parámetros de Parte" +msgstr "Parámetros de Pieza" #: part/templates/part/category.html:211 msgid "Create new part category" -msgstr "Crear nueva categoría de partes" +msgstr "Crear nueva categoría de piezas" #: part/templates/part/category.html:212 msgid "New Category" @@ -7105,40 +7163,40 @@ msgstr "Nueva Categoría" #: part/templates/part/category_sidebar.html:13 msgid "Import Parts" -msgstr "Importar Partes" +msgstr "Importar Piezas" #: part/templates/part/copy_part.html:10 #, python-format msgid "Make a copy of part '%(full_name)s'." -msgstr "Hacer una copia de la parte '%(full_name)s'." +msgstr "Hacer una copia de la pieza '%(full_name)s'." #: part/templates/part/copy_part.html:14 #: part/templates/part/create_part.html:11 msgid "Possible Matching Parts" -msgstr "Posibles Partes coincidentes" +msgstr "Posibles Piezas Coincidentes" #: 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 "La nueva parte puede ser un duplicado de estas partes existentes" +msgstr "La nueva pieza puede ser un duplicado de estas piezas existentes" #: part/templates/part/create_part.html:17 #, python-format msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" -msgstr "%(full_name)s - %(desc)s (%(match_per)s%% coincidencia)" +msgstr "" #: part/templates/part/detail.html:20 msgid "Part Stock" -msgstr "Stock de parte" +msgstr "Stock de Piezas" #: part/templates/part/detail.html:44 msgid "Refresh scheduling data" -msgstr "" +msgstr "Actualizar datos de programación" #: part/templates/part/detail.html:45 part/templates/part/prices.html:15 #: templates/js/translated/tables.js:552 msgid "Refresh" -msgstr "Actualizar" +msgstr "" #: part/templates/part/detail.html:66 msgid "Add stocktake information" @@ -7147,49 +7205,49 @@ msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/stock.js:2179 users/models.py:191 +#: templates/js/translated/stock.js:2215 users/models.py:191 msgid "Stocktake" -msgstr "Verificación de Inventario" +msgstr "Inventario" #: part/templates/part/detail.html:83 msgid "Part Test Templates" -msgstr "Plantillas de prueba de parte" +msgstr "Plantillas de Prueba para Pieza" #: part/templates/part/detail.html:88 msgid "Add Test Template" -msgstr "Añadir Plantilla de Prueba" +msgstr "" #: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 msgid "Sales Order Allocations" -msgstr "Asignaciones de órdenes de venta" +msgstr "Asignaciones de Pedidos de Entrega" #: part/templates/part/detail.html:156 msgid "Part Notes" -msgstr "Notas de parte" +msgstr "Notas de la Pieza" #: part/templates/part/detail.html:171 msgid "Part Variants" -msgstr "Variantes de Parte" +msgstr "Variantes de la Pieza" #: part/templates/part/detail.html:175 msgid "Create new variant" -msgstr "Crear nueva variante" +msgstr "" #: part/templates/part/detail.html:176 msgid "New Variant" -msgstr "Nueva Variante" +msgstr "" #: part/templates/part/detail.html:199 msgid "Add new parameter" -msgstr "Añadir nuevo parámetro" +msgstr "" #: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 msgid "Related Parts" -msgstr "Partes relacionadas" +msgstr "Piezas Relacionadas" #: part/templates/part/detail.html:236 part/templates/part/detail.html:237 msgid "Add Related" -msgstr "Añadir Relacionado" +msgstr "" #: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 #: report/templates/report/inventree_bill_of_materials_report.html:100 @@ -7198,52 +7256,52 @@ msgstr "Lista de Materiales" #: part/templates/part/detail.html:260 msgid "Export actions" -msgstr "Exportar acciones" +msgstr "" #: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 msgid "Export BOM" -msgstr "Exportar BOM" +msgstr "" #: part/templates/part/detail.html:266 msgid "Print BOM Report" -msgstr "Imprimir informe BOM" +msgstr "" #: part/templates/part/detail.html:272 msgid "BOM actions" -msgstr "Acciones BOM" +msgstr "" #: part/templates/part/detail.html:276 msgid "Upload BOM" -msgstr "Subir BOM" +msgstr "" #: part/templates/part/detail.html:278 msgid "Validate BOM" -msgstr "Validar BOM" +msgstr "" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" -msgstr "Añadir artículo al BOM" +msgstr "" #: part/templates/part/detail.html:297 msgid "Assemblies" -msgstr "Ensamblajes" +msgstr "" #: part/templates/part/detail.html:313 msgid "Part Builds" -msgstr "Construcción de partes" +msgstr "" #: part/templates/part/detail.html:338 stock/templates/stock/item.html:36 msgid "Build Order Allocations" -msgstr "Construir adjudicaciones de pedidos" +msgstr "" #: part/templates/part/detail.html:352 msgid "Part Suppliers" -msgstr "Proveedores de partes" +msgstr "Proveedores de Piezas" #: part/templates/part/detail.html:372 msgid "Part Manufacturers" -msgstr "Fabricantes de partes" +msgstr "" #: part/templates/part/detail.html:659 msgid "Related Part" @@ -7260,15 +7318,15 @@ msgstr "" #: part/templates/part/import_wizard/ajax_part_upload.html:29 #: part/templates/part/import_wizard/part_upload.html:14 msgid "Insufficient privileges." -msgstr "Privilegios insuficientes." +msgstr "" #: part/templates/part/import_wizard/part_upload.html:8 msgid "Return to Parts" -msgstr "Volver a los artículos" +msgstr "Volver a las Piezas" #: part/templates/part/import_wizard/part_upload.html:13 msgid "Import Parts from File" -msgstr "Importar artículos desde archivo" +msgstr "Importar Piezas desde Archivo" #: part/templates/part/import_wizard/part_upload.html:31 msgid "Requirements for part import" @@ -7280,45 +7338,45 @@ msgstr "" #: part/templates/part/import_wizard/part_upload.html:33 msgid "Part Import Template" -msgstr "Plantilla de importación de parte" +msgstr "" #: part/templates/part/import_wizard/part_upload.html:89 msgid "Download Part Import Template" -msgstr "Descargar plantilla de importación de parte" +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 "Formato" +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 "Seleccionar formato de archivo" +msgstr "" #: part/templates/part/part_app_base.html:12 msgid "Part List" -msgstr "Listado de artículos" +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 "Estás suscrito a las notificaciones de este artículo" +msgstr "" #: part/templates/part/part_base.html:33 msgid "Subscribe to notifications for this part" -msgstr "Suscríbete a las notificaciones de este artículo" +msgstr "" #: part/templates/part/part_base.html:52 #: stock/templates/stock/item_base.html:62 #: stock/templates/stock/location.html:74 msgid "Print Label" -msgstr "Imprimir etiqueta" +msgstr "Imprimir Etiqueta" #: part/templates/part/part_base.html:58 msgid "Show pricing information" -msgstr "Mostrar información de precios" +msgstr "" #: part/templates/part/part_base.html:63 #: stock/templates/stock/item_base.html:110 @@ -7328,51 +7386,51 @@ msgstr "Acciones de stock" #: part/templates/part/part_base.html:70 msgid "Count part stock" -msgstr "Contar stock de partes" +msgstr "" #: part/templates/part/part_base.html:76 msgid "Transfer part stock" -msgstr "Transferir stock de partes" +msgstr "" #: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 msgid "Part actions" -msgstr "Acciones para partes" +msgstr "" #: part/templates/part/part_base.html:94 msgid "Duplicate part" -msgstr "Duplicar parte" +msgstr "" #: part/templates/part/part_base.html:97 msgid "Edit part" -msgstr "Editar parte" +msgstr "" #: part/templates/part/part_base.html:100 msgid "Delete part" -msgstr "Eliminar parte" +msgstr "" #: part/templates/part/part_base.html:119 msgid "Part is a template part (variants can be made from this part)" -msgstr "La parte es una parte de plantilla (las variantes se pueden hacer a partir de esta parte)" +msgstr "" #: part/templates/part/part_base.html:123 msgid "Part can be assembled from other parts" -msgstr "La parte puede ser ensamblada desde otras partes" +msgstr "" #: part/templates/part/part_base.html:127 msgid "Part can be used in assemblies" -msgstr "La parte puede ser usada en ensamblajes" +msgstr "" #: part/templates/part/part_base.html:131 msgid "Part stock is tracked by serial number" -msgstr "El stock de esta parte está rastreado por número de serie" +msgstr "" #: part/templates/part/part_base.html:135 msgid "Part can be purchased from external suppliers" -msgstr "La parte puede ser comprada de proveedores externos" +msgstr "La pieza puede comprarse a proveedores externos" #: part/templates/part/part_base.html:139 msgid "Part can be sold to customers" -msgstr "La parte puede ser vendida a clientes" +msgstr "La pieza puede ser entregada a los clientes" #: part/templates/part/part_base.html:145 msgid "Part is not active" @@ -7388,12 +7446,12 @@ msgstr "Inactivo" #: part/templates/part/part_base.html:153 msgid "Part is virtual (not a physical part)" -msgstr "La parte es virtual (no una parte física)" +msgstr "" #: part/templates/part/part_base.html:163 #: part/templates/part/part_base.html:682 msgid "Show Part Details" -msgstr "Mostrar Detalles de Parte" +msgstr "Mostrar Detalles de la Pieza" #: part/templates/part/part_base.html:218 #: stock/templates/stock/item_base.html:388 @@ -7403,31 +7461,31 @@ msgstr "" #: part/templates/part/part_base.html:227 #: stock/templates/stock/item_base.html:381 msgid "Allocated to Sales Orders" -msgstr "" +msgstr "Asignado a Pedidos" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" -msgstr "Puede construir" +msgstr "" #: part/templates/part/part_base.html:291 msgid "Minimum stock level" -msgstr "Nivel mínimo de stock" +msgstr "" #: part/templates/part/part_base.html:322 templates/js/translated/bom.js:1071 #: templates/js/translated/part.js:1264 templates/js/translated/part.js:2444 #: templates/js/translated/pricing.js:391 #: templates/js/translated/pricing.js:1054 msgid "Price Range" -msgstr "Rango de precios" +msgstr "" #: part/templates/part/part_base.html:352 msgid "Latest Serial Number" -msgstr "Último número de serie" +msgstr "" #: part/templates/part/part_base.html:356 #: stock/templates/stock/item_base.html:322 msgid "Search for serial number" -msgstr "Buscar número de serie" +msgstr "" #: part/templates/part/part_base.html:444 msgid "Part QR Code" @@ -7463,7 +7521,7 @@ msgstr "Precios del Proveedor" #: part/templates/part/part_pricing.html:95 #: part/templates/part/part_pricing.html:110 msgid "Unit Cost" -msgstr "Costo unitario" +msgstr "" #: part/templates/part/part_pricing.html:40 msgid "No supplier pricing available" @@ -7472,35 +7530,35 @@ msgstr "Ningún precio de proveedor disponible" #: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:90 #: part/templates/part/prices.html:250 msgid "BOM Pricing" -msgstr "Precios BOM" +msgstr "Precio de la Lista de Materiales (BOM)" #: part/templates/part/part_pricing.html:66 msgid "Unit Purchase Price" -msgstr "Precio de Compra Unitario" +msgstr "Precio de Compra por Unidad" #: part/templates/part/part_pricing.html:72 msgid "Total Purchase Price" -msgstr "Precio total de compra" +msgstr "" #: part/templates/part/part_pricing.html:83 msgid "No BOM pricing available" -msgstr "No hay precios BOM disponibles" +msgstr "No hay precio de la Lista de Materiales (BOM) disponible" #: part/templates/part/part_pricing.html:92 msgid "Internal Price" -msgstr "Precio Interno" +msgstr "" #: part/templates/part/part_pricing.html:123 msgid "No pricing information is available for this part." -msgstr "No hay información de precios disponible para esta parte." +msgstr "" #: part/templates/part/part_scheduling.html:14 msgid "Scheduled Quantity" -msgstr "Cantidad programada" +msgstr "Cantidad Programada" #: part/templates/part/part_sidebar.html:11 msgid "Variants" -msgstr "Variantes" +msgstr "" #: part/templates/part/part_sidebar.html:14 #: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 @@ -7509,7 +7567,7 @@ msgstr "Variantes" #: templates/InvenTree/settings/sidebar.html:51 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 -#: templates/js/translated/stock.js:2033 templates/navbar.html:31 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 msgid "Stock" msgstr "Inventario" @@ -7524,19 +7582,19 @@ msgstr "Programación" #: part/templates/part/part_sidebar.html:54 msgid "Test Templates" -msgstr "Plantillas de Prueba" +msgstr "" #: part/templates/part/part_thumb.html:11 msgid "Select from existing images" -msgstr "Seleccionar de imágenes existentes" +msgstr "" #: part/templates/part/prices.html:11 msgid "Pricing Overview" -msgstr "Vista general de precios" +msgstr "" #: part/templates/part/prices.html:14 msgid "Refresh Part Pricing" -msgstr "Actualizar precio de partes" +msgstr "" #: part/templates/part/prices.html:17 msgid "Override Part Pricing" @@ -7555,33 +7613,33 @@ msgstr "Editar" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 -#: templates/js/translated/stock.js:2209 +#: templates/js/translated/stock.js:2245 msgid "Last Updated" -msgstr "Última actualización" +msgstr "Última Actualización" #: part/templates/part/prices.html:37 part/templates/part/prices.html:127 msgid "Price Category" -msgstr "Categoría de precio" +msgstr "" #: part/templates/part/prices.html:38 part/templates/part/prices.html:128 msgid "Minimum" -msgstr "Mínimo" +msgstr "" #: part/templates/part/prices.html:39 part/templates/part/prices.html:129 msgid "Maximum" -msgstr "Máximo" +msgstr "" #: part/templates/part/prices.html:51 part/templates/part/prices.html:174 msgid "Internal Pricing" -msgstr "Precio Interno" +msgstr "" #: part/templates/part/prices.html:64 part/templates/part/prices.html:206 msgid "Purchase History" -msgstr "Historial de compras" +msgstr "" #: part/templates/part/prices.html:98 part/templates/part/prices.html:274 msgid "Variant Pricing" -msgstr "Precios variantes" +msgstr "" #: part/templates/part/prices.html:106 msgid "Pricing Overrides" @@ -7589,11 +7647,11 @@ msgstr "" #: part/templates/part/prices.html:113 msgid "Overall Pricing" -msgstr "Precios globales" +msgstr "" #: part/templates/part/prices.html:149 part/templates/part/prices.html:326 msgid "Sale History" -msgstr "Historial de ventas" +msgstr "" #: part/templates/part/prices.html:157 msgid "Sale price data is not available for this part" @@ -7608,11 +7666,11 @@ msgstr "" #: part/templates/part/prices.html:275 part/templates/part/prices.html:298 #: part/templates/part/prices.html:327 msgid "Jump to overview" -msgstr "Ir a la vista general" +msgstr "" #: part/templates/part/prices.html:180 msgid "Add Internal Price Break" -msgstr "Añadir salto de precio interno" +msgstr "" #: part/templates/part/prices.html:297 msgid "Sale Pricing" @@ -7629,52 +7687,52 @@ msgstr "" #: part/templates/part/stock_count.html:7 templates/js/translated/part.js:704 #: templates/js/translated/part.js:2140 templates/js/translated/part.js:2142 msgid "No Stock" -msgstr "Sin Stock" +msgstr "" #: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 msgid "Low Stock" -msgstr "Bajo Stock" +msgstr "" #: part/templates/part/upload_bom.html:8 msgid "Return to BOM" -msgstr "Volver al BOM" +msgstr "Volver a la Lista de Materiales (BOM)" #: part/templates/part/upload_bom.html:13 msgid "Upload Bill of Materials" -msgstr "Cargar Lista de Materiales" +msgstr "" #: part/templates/part/upload_bom.html:19 msgid "BOM upload requirements" -msgstr "Requisitos de subida BOM" +msgstr "" #: part/templates/part/upload_bom.html:23 #: part/templates/part/upload_bom.html:90 msgid "Upload BOM File" -msgstr "Subir archivo BOM" +msgstr "" #: part/templates/part/upload_bom.html:29 msgid "Submit BOM Data" -msgstr "Enviar datos BOM" +msgstr "" #: part/templates/part/upload_bom.html:37 msgid "Requirements for BOM upload" -msgstr "Requisitos para subir BOM" +msgstr "" #: part/templates/part/upload_bom.html:39 msgid "The BOM file must contain the required named columns as provided in the " -msgstr "El archivo BOM debe contener las columnas con nombre requeridos como se indica en el " +msgstr "El archivo dde Lista de Materiales (BOM) debe contener las columnas con nombre requeridos como se indica en el " #: part/templates/part/upload_bom.html:39 msgid "BOM Upload Template" -msgstr "Plantilla de subida BOM" +msgstr "" #: part/templates/part/upload_bom.html:40 msgid "Each part must already exist in the database" -msgstr "Cada parte debe existir en la base de datos" +msgstr "" #: part/templates/part/variant_part.html:9 msgid "Create new part variant" -msgstr "Crear nueva variante de parte" +msgstr "" #: part/templates/part/variant_part.html:10 msgid "Create a new variant part from this template" @@ -7682,7 +7740,7 @@ msgstr "" #: part/views.py:111 msgid "Match References" -msgstr "Coincidir Referencias" +msgstr "Concordar Referencias" #: part/views.py:275 #, python-brace-format @@ -7691,19 +7749,19 @@ msgstr "" #: part/views.py:425 msgid "Select Part Image" -msgstr "Seleccionar Imagen de Parte" +msgstr "" #: part/views.py:448 msgid "Updated part image" -msgstr "Imagen de parte actualizada" +msgstr "" #: part/views.py:451 msgid "Part image not found" -msgstr "Imagen de parte no encontrada" +msgstr "" #: part/views.py:545 msgid "Part Pricing" -msgstr "Precio de parte" +msgstr "" #: plugin/api.py:168 msgid "Plugin cannot be deleted as it is currently active" @@ -7711,25 +7769,25 @@ msgstr "" #: plugin/base/action/api.py:32 msgid "No action specified" -msgstr "No se especificó ninguna acción" +msgstr "" #: plugin/base/action/api.py:41 msgid "No matching action found" -msgstr "No se encontró ninguna acción coincidente" +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 "No se encontró ninguna coincidencia para los datos del código de barras" +msgstr "" #: plugin/base/barcodes/api.py:128 msgid "Match found for barcode data" -msgstr "Coincidencia encontrada para datos de códigos de barras" +msgstr "" #: plugin/base/barcodes/api.py:154 #: templates/js/translated/purchase_order.js:1406 msgid "Barcode matches existing item" -msgstr "El código de barras coincide con artículo existente" +msgstr "" #: plugin/base/barcodes/api.py:293 msgid "No matching part data found" @@ -7868,7 +7926,7 @@ msgstr "" #: plugin/base/label/label.py:39 msgid "Label printing failed" -msgstr "Impresión de etiquetas fallida" +msgstr "" #: plugin/base/label/mixins.py:63 msgid "Error rendering label to PDF" @@ -7884,11 +7942,11 @@ msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:25 msgid "InvenTree Barcodes" -msgstr "Códigos de barras de InvenTree" +msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:26 msgid "Provides native support for barcodes" -msgstr "Proporciona soporte nativo para códigos de barras" +msgstr "" #: plugin/builtin/barcodes/inventree_barcode.py:28 #: plugin/builtin/integration/core_notifications.py:35 @@ -7899,15 +7957,15 @@ msgstr "Proporciona soporte nativo para códigos de barras" #: 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 "Contribuidores de InvenTree" +msgstr "" #: plugin/builtin/integration/core_notifications.py:34 msgid "InvenTree Notifications" -msgstr "Notificaciones de InvenTree" +msgstr "" #: plugin/builtin/integration/core_notifications.py:36 msgid "Integrated outgoing notification methods" -msgstr "Métodos de notificaciones salientes integrados" +msgstr "" #: plugin/builtin/integration/core_notifications.py:41 #: plugin/builtin/integration/core_notifications.py:80 @@ -7917,27 +7975,27 @@ msgstr "Habilitar notificaciones por correo electrónico" #: plugin/builtin/integration/core_notifications.py:42 #: plugin/builtin/integration/core_notifications.py:81 msgid "Allow sending of emails for event notifications" -msgstr "Permitir el envío de correos electrónicos para notificaciones de eventos" +msgstr "Habilitar el envío de correo electrónico para la notificación de eventos" #: plugin/builtin/integration/core_notifications.py:47 msgid "Enable slack notifications" -msgstr "Activar notificaciones de slack" +msgstr "" #: plugin/builtin/integration/core_notifications.py:49 msgid "Allow sending of slack channel messages for event notifications" -msgstr "Permitir el envío de mensajes por canal de slack para notificaciones de eventos" +msgstr "" #: plugin/builtin/integration/core_notifications.py:55 msgid "Slack incoming webhook url" -msgstr "URL de webhook entrante de Slack" +msgstr "" #: plugin/builtin/integration/core_notifications.py:56 msgid "URL that is used to send messages to a slack channel" -msgstr "URL que se utiliza para enviar mensajes a un canal de slack" +msgstr "" #: plugin/builtin/integration/core_notifications.py:164 msgid "Open link" -msgstr "Abrir enlace" +msgstr "" #: plugin/builtin/integration/currency_exchange.py:22 msgid "InvenTree Currency Exchange" @@ -7949,19 +8007,19 @@ msgstr "" #: plugin/builtin/labels/inventree_label.py:20 msgid "InvenTree PDF label printer" -msgstr "Impresora de etiquetas PDF de InvenTree" +msgstr "" #: plugin/builtin/labels/inventree_label.py:21 msgid "Provides native support for printing PDF labels" -msgstr "Proporciona soporte nativo para imprimir etiquetas PDF" +msgstr "" #: plugin/builtin/labels/inventree_label.py:29 msgid "Debug mode" -msgstr "Modo de depuración" +msgstr "" #: plugin/builtin/labels/inventree_label.py:30 msgid "Enable debug mode - returns raw HTML instead of PDF" -msgstr "Activar modo de depuración - devuelve código HTML en lugar de PDF" +msgstr "" #: plugin/builtin/labels/inventree_machine.py:61 msgid "InvenTree machine label printer" @@ -7999,7 +8057,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "" @@ -8114,27 +8172,27 @@ msgstr "" #: plugin/models.py:30 msgid "Plugin Configuration" -msgstr "Configuración del complemento" +msgstr "" #: plugin/models.py:31 msgid "Plugin Configurations" -msgstr "Configuraciones del Plug-in" +msgstr "" #: plugin/models.py:34 users/models.py:89 msgid "Key" -msgstr "Clave" +msgstr "" #: plugin/models.py:34 msgid "Key of plugin" -msgstr "Clave del complemento" +msgstr "" #: plugin/models.py:42 msgid "PluginName of the plugin" -msgstr "Nombre del complemento" +msgstr "" #: plugin/models.py:49 plugin/serializers.py:90 msgid "Package Name" -msgstr "Nombre de Paquete" +msgstr "" #: plugin/models.py:51 msgid "Name of the installed package, if the plugin was installed via PIP" @@ -8142,20 +8200,20 @@ msgstr "" #: plugin/models.py:56 msgid "Is the plugin active" -msgstr "Está activo el complemento" +msgstr "" #: plugin/models.py:148 templates/js/translated/table_filters.js:370 #: templates/js/translated/table_filters.js:504 msgid "Installed" -msgstr "Instalado" +msgstr "" #: plugin/models.py:157 msgid "Sample plugin" -msgstr "Complemento de ejemplo" +msgstr "" #: plugin/models.py:165 msgid "Builtin Plugin" -msgstr "Complemento integrado" +msgstr "" #: plugin/models.py:173 msgid "Package Plugin" @@ -8164,62 +8222,62 @@ msgstr "" #: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 #: templates/js/translated/plugin.js:51 msgid "Plugin" -msgstr "Complemento" +msgstr "Plugin" #: plugin/models.py:244 msgid "Method" -msgstr "Método" +msgstr "" #: plugin/plugin.py:264 msgid "No author found" -msgstr "No se encontró autor" +msgstr "" #: plugin/registry.py:589 #, python-brace-format msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" -msgstr "El complemento '{p}' no es compatible con la versión actual de InvenTree {v}" +msgstr "" #: plugin/registry.py:592 #, python-brace-format msgid "Plugin requires at least version {v}" -msgstr "El complemento requiere al menos la versión {v}" +msgstr "" #: plugin/registry.py:594 #, python-brace-format msgid "Plugin requires at most version {v}" -msgstr "El complemento requiere como máximo la versión {v}" +msgstr "" #: plugin/samples/integration/sample.py:52 msgid "Enable PO" -msgstr "Habilitar PO" +msgstr "" #: plugin/samples/integration/sample.py:53 msgid "Enable PO functionality in InvenTree interface" -msgstr "Habilitar la funcionalidad PO en la interfaz de InvenTree" +msgstr "" #: plugin/samples/integration/sample.py:58 msgid "API Key" -msgstr "Clave API" +msgstr "" #: plugin/samples/integration/sample.py:59 msgid "Key required for accessing external API" -msgstr "Clave necesaria para acceder a la API externa" +msgstr "" #: plugin/samples/integration/sample.py:63 msgid "Numerical" -msgstr "Numérico" +msgstr "" #: plugin/samples/integration/sample.py:64 msgid "A numerical setting" -msgstr "Una configuración numérica" +msgstr "" #: plugin/samples/integration/sample.py:69 msgid "Choice Setting" -msgstr "Configuración de Elección" +msgstr "" #: plugin/samples/integration/sample.py:70 msgid "A setting with multiple choices" -msgstr "Un ajuste con múltiples opciones" +msgstr "" #: plugin/samples/integration/sample_currency_exchange.py:15 msgid "Sample currency exchange plugin" @@ -8231,21 +8289,21 @@ msgstr "" #: plugin/serializers.py:81 msgid "Source URL" -msgstr "URL de origen" +msgstr "" #: plugin/serializers.py:83 msgid "Source for the package - this can be a custom registry or a VCS path" -msgstr "Fuente del paquete - puede ser un registro personalizado o una ruta VCS" +msgstr "" #: plugin/serializers.py:92 msgid "Name for the Plugin Package - can also contain a version indicator" -msgstr "Nombre del paquete Plug-in - también puede contener un indicador de versión" +msgstr "" #: plugin/serializers.py:99 #: templates/InvenTree/settings/plugin_settings.html:42 #: templates/js/translated/plugin.js:86 msgid "Version" -msgstr "Versión" +msgstr "" #: plugin/serializers.py:101 msgid "Version specifier for the plugin. Leave blank for latest version." @@ -8253,19 +8311,19 @@ msgstr "" #: plugin/serializers.py:106 msgid "Confirm plugin installation" -msgstr "Confirmar instalación del complemento" +msgstr "" #: plugin/serializers.py:108 msgid "This will install this plugin now into the current instance. The instance will go into maintenance." -msgstr "Esto instalará este plug-in en la instancia actual. La instancia entrará en mantenimiento." +msgstr "" #: plugin/serializers.py:121 msgid "Installation not confirmed" -msgstr "Instalación no confirmada" +msgstr "" #: plugin/serializers.py:123 msgid "Either packagename of URL must be provided" -msgstr "Debe proporcionar cualquier nombre de paquete de la URL" +msgstr "" #: plugin/serializers.py:156 msgid "Full reload" @@ -8293,11 +8351,11 @@ msgstr "" #: plugin/serializers.py:195 msgid "Activate Plugin" -msgstr "Activar complemento" +msgstr "" #: plugin/serializers.py:196 msgid "Activate this plugin" -msgstr "Activar este complemento" +msgstr "" #: plugin/serializers.py:219 msgid "Delete configuration" @@ -8307,146 +8365,154 @@ msgstr "" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" -msgstr "No se han proporcionado objetos válidos a la plantilla" +msgstr "" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" -msgstr "Informe de la prueba" +msgstr "" #: report/helpers.py:15 msgid "A4" -msgstr "A4" +msgstr "" #: report/helpers.py:16 msgid "A3" -msgstr "A3" +msgstr "" #: report/helpers.py:17 msgid "Legal" -msgstr "Legal" +msgstr "" #: report/helpers.py:18 msgid "Letter" -msgstr "Carta" +msgstr "" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" -msgstr "Nombre de la plantilla" +msgstr "" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" -msgstr "Plantilla de informe" +msgstr "" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "Descripción de la plantilla de informe" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" -msgstr "Número de revisión del informe (autoincremental)" +msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" -msgstr "Tamaño de página para reportes PDF" +msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" -msgstr "Patrón para generar nombres de archivo" +msgstr "" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" -msgstr "Plantilla de informe está habilitada" +msgstr "" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" -msgstr "Filtros de consulta de Stock (lista separada por comas de pares clave=valor)" +msgstr "" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" -msgstr "Incluye Pruebas Instaladas" +msgstr "" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" -msgstr "Incluye resultados de prueba para artículos de stock instalados dentro del artículo ensamblado" - -#: report/models.py:422 -msgid "Build Filters" -msgstr "Crear filtros" +msgstr "" #: report/models.py:423 -msgid "Build query filters (comma-separated list of key=value pairs" -msgstr "Crear filtros de consulta (lista separada por comas de pares clave=valor" +msgid "Build Filters" +msgstr "" -#: report/models.py:462 -msgid "Part Filters" -msgstr "Filtros de partes" +#: report/models.py:424 +msgid "Build query filters (comma-separated list of key=value pairs" +msgstr "" #: report/models.py:463 +msgid "Part Filters" +msgstr "" + +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" -msgstr "Filtros de búsqueda de partes (lista separada por comas de pares clave=valor" +msgstr "" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" -msgstr "Filtros de búsqueda de orden de compra" +msgstr "" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" -msgstr "Filtros de búsqueda de pedidos de ventas" +msgstr "Filtros de búsqueda de pedidos de entrega" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" -msgstr "Filtros de búsqueda de orden de devolución" +msgstr "" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" -msgstr "Fragmento" +msgstr "" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" -msgstr "Archivo fragmento de informe" +msgstr "" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" -msgstr "Descripción de archivo de fragmento" +msgstr "" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" -msgstr "Activo" +msgstr "" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" -msgstr "Reportar archivo de activos" +msgstr "" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" -msgstr "Descripción del archivo de activos" +msgstr "" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" #: report/templates/report/inventree_bill_of_materials_report.html:133 msgid "Materials needed" -msgstr "Materiales necesarios" +msgstr "" #: report/templates/report/inventree_build_order_base.html:146 msgid "Required For" -msgstr "Requerido para" +msgstr "" #: report/templates/report/inventree_po_report_base.html:15 msgid "Supplier was deleted" -msgstr "El proveedor ha sido eliminado" +msgstr "" #: report/templates/report/inventree_po_report_base.html:30 #: report/templates/report/inventree_so_report_base.html:30 @@ -8462,7 +8528,7 @@ msgstr "Precio Unitario" #: report/templates/report/inventree_return_order_report_base.html:48 #: report/templates/report/inventree_so_report_base.html:55 msgid "Extra Line Items" -msgstr "Partida extra" +msgstr "" #: report/templates/report/inventree_po_report_base.html:72 #: report/templates/report/inventree_so_report_base.html:72 @@ -8484,7 +8550,7 @@ msgstr "Total" #: templates/js/translated/sales_order.js:1696 #: templates/js/translated/stock.js:596 msgid "Serial Number" -msgstr "Número de serie" +msgstr "" #: report/templates/report/inventree_slr_report.html:97 msgid "Stock location items" @@ -8492,48 +8558,48 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:21 msgid "Stock Item Test Report" -msgstr "Artículo Stock Informe de prueba" +msgstr "" #: report/templates/report/inventree_test_report_base.html:97 msgid "Test Results" -msgstr "Resultados de la Prueba" +msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1492 msgid "Test" -msgstr "Prueba" +msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Result" -msgstr "Resultado" +msgstr "" #: report/templates/report/inventree_test_report_base.html:130 msgid "Pass" -msgstr "Pasada" +msgstr "" #: report/templates/report/inventree_test_report_base.html:132 msgid "Fail" -msgstr "Fallo" +msgstr "" #: report/templates/report/inventree_test_report_base.html:139 msgid "No result (required)" -msgstr "Ningún resultado (requerido)" +msgstr "" #: report/templates/report/inventree_test_report_base.html:141 msgid "No result" -msgstr "Sin resultados" +msgstr "" #: report/templates/report/inventree_test_report_base.html:154 #: stock/templates/stock/stock_sidebar.html:16 msgid "Installed Items" -msgstr "Elementos instalados" +msgstr "" #: report/templates/report/inventree_test_report_base.html:168 #: stock/admin.py:162 templates/js/translated/stock.js:700 -#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110 msgid "Serial" -msgstr "Serial" +msgstr "" #: report/templatetags/report.py:96 msgid "Asset file does not exist" @@ -8553,11 +8619,11 @@ msgstr "" #: stock/admin.py:52 stock/admin.py:172 msgid "Location ID" -msgstr "ID de Ubicación" +msgstr "" #: stock/admin.py:54 stock/admin.py:176 msgid "Location Name" -msgstr "Nombre de localización" +msgstr "" #: stock/admin.py:64 stock/templates/stock/location.html:131 #: stock/templates/stock/location.html:137 @@ -8566,48 +8632,48 @@ msgstr "Ruta de Ubicación" #: stock/admin.py:149 msgid "Stock Item ID" -msgstr "ID del artículo de almacén" +msgstr "" #: stock/admin.py:168 msgid "Status Code" -msgstr "Código de estado" +msgstr "" #: stock/admin.py:180 msgid "Supplier Part ID" -msgstr "ID Parte del Proveedor" +msgstr "" #: stock/admin.py:185 msgid "Supplier ID" -msgstr "ID de proveedor" +msgstr "" #: stock/admin.py:191 msgid "Supplier Name" -msgstr "Nombre del proveedor" +msgstr "" #: stock/admin.py:196 msgid "Customer ID" -msgstr "ID de cliente" +msgstr "ID del Cliente" #: stock/admin.py:201 stock/models.py:792 #: stock/templates/stock/item_base.html:354 msgid "Installed In" -msgstr "Instalado en" +msgstr "" #: stock/admin.py:206 msgid "Build ID" -msgstr "ID de construcción" +msgstr "" #: stock/admin.py:216 msgid "Sales Order ID" -msgstr "ID de orden de venta" +msgstr "ID de Pedido de Entrega" #: stock/admin.py:221 msgid "Purchase Order ID" -msgstr "ID de orden de compra" +msgstr "" #: stock/admin.py:236 msgid "Review Needed" -msgstr "Revisión necesaria" +msgstr "" #: stock/admin.py:241 msgid "Delete on Deplete" @@ -8615,9 +8681,9 @@ msgstr "" #: stock/admin.py:256 stock/models.py:886 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2193 users/models.py:113 +#: templates/js/translated/stock.js:2229 users/models.py:113 msgid "Expiry Date" -msgstr "Fecha de Expiración" +msgstr "" #: stock/api.py:281 msgid "Filter by location depth" @@ -8637,7 +8703,7 @@ msgstr "" #: stock/api.py:568 templates/js/translated/table_filters.js:427 msgid "External Location" -msgstr "Ubicación externa" +msgstr "" #: stock/api.py:753 msgid "Part Tree" @@ -8654,15 +8720,15 @@ msgstr "" #: stock/api.py:788 stock/templates/stock/item_base.html:439 #: templates/js/translated/table_filters.js:441 msgid "Stale" -msgstr "Desactualizado" +msgstr "" #: stock/api.py:874 msgid "Quantity is required" -msgstr "Cantidad requerida" +msgstr "" #: stock/api.py:880 msgid "Valid part must be supplied" -msgstr "Debe suministrarse una parte válida" +msgstr "" #: stock/api.py:911 msgid "The given supplier part does not exist" @@ -8703,26 +8769,26 @@ msgstr "Ubicaciones de Stock" #: stock/models.py:158 stock/models.py:935 #: stock/templates/stock/item_base.html:247 msgid "Owner" -msgstr "Propietario" +msgstr "" #: stock/models.py:159 stock/models.py:936 msgid "Select Owner" -msgstr "Seleccionar Propietario" +msgstr "" #: stock/models.py:167 msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:174 templates/js/translated/stock.js:2745 +#: stock/models.py:174 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" -msgstr "Externo" +msgstr "" #: stock/models.py:175 msgid "This is an external stock location" msgstr "" -#: stock/models.py:181 templates/js/translated/stock.js:2754 +#: stock/models.py:181 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" @@ -8739,7 +8805,7 @@ msgstr "" msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:290 msgid "Stock item cannot be created for virtual parts" msgstr "" @@ -8750,71 +8816,71 @@ msgstr "" #: stock/models.py:683 stock/models.py:696 msgid "Quantity must be 1 for item with a serial number" -msgstr "La cantidad debe ser 1 para el artículo con un número de serie" +msgstr "" #: stock/models.py:686 msgid "Serial number cannot be set if quantity greater than 1" -msgstr "Número de serie no se puede establecer si la cantidad es mayor que 1" +msgstr "" #: stock/models.py:710 msgid "Item cannot belong to itself" -msgstr "El objeto no puede pertenecer a sí mismo" +msgstr "" #: stock/models.py:715 msgid "Item must have a build reference if is_building=True" -msgstr "El artículo debe tener una referencia de construcción si is_building=True" +msgstr "" #: stock/models.py:728 msgid "Build reference does not point to the same part object" -msgstr "La referencia de la construcción no apunta al mismo objeto de parte" +msgstr "" #: stock/models.py:744 msgid "Parent Stock Item" -msgstr "Artículo de stock padre" +msgstr "" #: stock/models.py:756 msgid "Base part" -msgstr "Parte base" +msgstr "" #: stock/models.py:766 msgid "Select a matching supplier part for this stock item" -msgstr "Seleccione una parte del proveedor correspondiente para este artículo de stock" +msgstr "Seleccione el proveedor de este artículo" #: stock/models.py:778 msgid "Where is this stock item located?" -msgstr "¿Dónde se encuentra este artículo de stock?" +msgstr "¿Dónde se encuentra este artículo?" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1351 msgid "Packaging this stock item is stored in" -msgstr "Empaquetar este artículo de stock se almacena en" +msgstr "Empaque utilizado para almacenar este artículo" #: stock/models.py:797 msgid "Is this item installed in another item?" -msgstr "¿Está este artículo instalado en otro artículo?" +msgstr "" #: stock/models.py:816 msgid "Serial number for this item" -msgstr "Número de serie para este artículo" +msgstr "" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1334 msgid "Batch code for this stock item" -msgstr "Código de lote para este artículo de stock" +msgstr "" #: stock/models.py:835 msgid "Stock Quantity" -msgstr "Cantidad de Stock" +msgstr "" #: stock/models.py:845 msgid "Source Build" -msgstr "Build de origen" +msgstr "" #: stock/models.py:848 msgid "Build for this stock item" -msgstr "Build para este item de stock" +msgstr "" #: stock/models.py:855 stock/templates/stock/item_base.html:363 msgid "Consumed By" -msgstr "Consumido por" +msgstr "" #: stock/models.py:858 msgid "Build order which consumed this stock item" @@ -8822,43 +8888,43 @@ msgstr "" #: stock/models.py:867 msgid "Source Purchase Order" -msgstr "Orden de compra de origen" +msgstr "" #: stock/models.py:871 msgid "Purchase order for this stock item" -msgstr "Orden de compra para este artículo de stock" +msgstr "" #: stock/models.py:877 msgid "Destination Sales Order" -msgstr "Orden de venta de destino" +msgstr "Pedido de Entrega de Destino" #: stock/models.py:888 msgid "Expiry date for stock item. Stock will be considered expired after this date" -msgstr "Fecha de caducidad del artículo de stock. El stock se considerará caducado después de esta fecha" +msgstr "" #: stock/models.py:906 msgid "Delete on deplete" -msgstr "Eliminar al agotar" +msgstr "Eliminar al agotarse" #: stock/models.py:907 msgid "Delete this Stock Item when stock is depleted" -msgstr "Eliminar este artículo de stock cuando se agoten las existencias" +msgstr "Eliminar este artículo cuando no queden más existencias" #: stock/models.py:927 msgid "Single unit purchase price at time of purchase" -msgstr "Precio de compra único en el momento de la compra" +msgstr "Precio de compra por unidad en el momento de la compra" #: stock/models.py:958 msgid "Converted to part" -msgstr "Convertido a parte" +msgstr "" #: stock/models.py:1468 msgid "Part is not set as trackable" -msgstr "La parte no está establecida como rastreable" +msgstr "" #: stock/models.py:1474 msgid "Quantity must be integer" -msgstr "Cantidad debe ser un entero" +msgstr "" #: stock/models.py:1482 #, python-brace-format @@ -8867,15 +8933,15 @@ msgstr "" #: stock/models.py:1488 msgid "Serial numbers must be a list of integers" -msgstr "Los números de serie deben ser una lista de enteros" +msgstr "" #: stock/models.py:1493 msgid "Quantity does not match serial numbers" -msgstr "La cantidad no coincide con los números de serie" +msgstr "" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:529 msgid "Serial numbers already exist" -msgstr "Números de serie ya existen" +msgstr "" #: stock/models.py:1598 msgid "Test template does not exist" @@ -8883,302 +8949,331 @@ msgstr "" #: stock/models.py:1616 msgid "Stock item has been assigned to a sales order" -msgstr "Artículo de stock ha sido asignado a un pedido de venta" +msgstr "Artículo de stock ha sido asignado a un pedido de entrega" #: stock/models.py:1620 msgid "Stock item is installed in another item" -msgstr "Artículo de stock está instalado en otro artículo" +msgstr "" #: stock/models.py:1623 msgid "Stock item contains other items" -msgstr "Artículo de stock contiene otros artículos" +msgstr "" #: stock/models.py:1626 msgid "Stock item has been assigned to a customer" -msgstr "Artículo de stock ha sido asignado a un cliente" +msgstr "El artículo de stock ha sido asignado a un cliente" #: stock/models.py:1629 msgid "Stock item is currently in production" -msgstr "El artículo de stock está en producción" +msgstr "" #: stock/models.py:1632 msgid "Serialized stock cannot be merged" -msgstr "Stock serializado no puede ser combinado" +msgstr "" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1240 msgid "Duplicate stock items" -msgstr "Artículos de Stock Duplicados" +msgstr "" #: stock/models.py:1643 msgid "Stock items must refer to the same part" -msgstr "Los artículos de stock deben referirse a la misma parte" +msgstr "" #: stock/models.py:1651 msgid "Stock items must refer to the same supplier part" -msgstr "Los artículos de stock deben referirse a la misma parte del proveedor" +msgstr "" #: stock/models.py:1656 msgid "Stock status codes must match" -msgstr "Los códigos de estado del stock deben coincidir" +msgstr "" #: stock/models.py:1873 msgid "StockItem cannot be moved as it is not in stock" -msgstr "Stock no se puede mover porque no está en stock" +msgstr "" #: stock/models.py:2336 msgid "Entry notes" -msgstr "Notas de entrada" +msgstr "" -#: stock/models.py:2399 +#: stock/models.py:2402 msgid "Value must be provided for this test" -msgstr "Debe proporcionarse un valor para esta prueba" +msgstr "" -#: stock/models.py:2405 +#: stock/models.py:2408 msgid "Attachment must be uploaded for this test" -msgstr "El archivo adjunto debe ser subido para esta prueba" +msgstr "" -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Test result" -msgstr "Resultado de la prueba" +msgstr "" -#: stock/models.py:2439 +#: stock/models.py:2442 msgid "Test output value" -msgstr "Valor de salida de prueba" +msgstr "" -#: stock/models.py:2447 +#: stock/models.py:2450 msgid "Test result attachment" -msgstr "Adjunto de resultados de prueba" +msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2454 msgid "Test notes" -msgstr "Notas de prueba" +msgstr "" -#: stock/serializers.py:96 +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "" + +#: stock/models.py:2463 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2469 +msgid "Started" +msgstr "" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:100 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:119 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 -msgid "Serial number is too large" -msgstr "El número de serie es demasiado grande" +#: stock/serializers.py:151 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" -#: stock/serializers.py:267 +#: stock/serializers.py:184 +msgid "Serial number is too large" +msgstr "" + +#: stock/serializers.py:282 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:380 +#: stock/serializers.py:402 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:442 +#: stock/serializers.py:464 msgid "Enter number of stock items to serialize" -msgstr "Introduzca el número de artículos de stock para serializar" +msgstr "" -#: stock/serializers.py:455 +#: stock/serializers.py:477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" -msgstr "La cantidad no debe exceder la cantidad disponible de stock ({q})" +msgstr "" -#: stock/serializers.py:462 +#: stock/serializers.py:484 msgid "Enter serial numbers for new items" -msgstr "Introduzca números de serie para nuevos artículos" +msgstr "" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 msgid "Destination stock location" -msgstr "Ubicación de stock de destino" +msgstr "" -#: stock/serializers.py:480 +#: stock/serializers.py:502 msgid "Optional note field" -msgstr "Campo de nota opcional" +msgstr "" -#: stock/serializers.py:490 +#: stock/serializers.py:512 msgid "Serial numbers cannot be assigned to this part" -msgstr "Los números de serie no se pueden asignar a esta parte" +msgstr "Los números de serie no se pueden asignar a esta pieza" -#: stock/serializers.py:545 +#: stock/serializers.py:567 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:574 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:553 +#: stock/serializers.py:575 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 msgid "Add transaction note (optional)" -msgstr "Añadir nota de transacción (opcional)" +msgstr "" -#: stock/serializers.py:566 +#: stock/serializers.py:588 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:596 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:581 +#: stock/serializers.py:607 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:620 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:628 +#: stock/serializers.py:655 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:663 +#: stock/serializers.py:690 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:676 +#: stock/serializers.py:703 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:693 +#: stock/serializers.py:720 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:724 +#: stock/serializers.py:751 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:761 +#: stock/serializers.py:788 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:767 +#: stock/serializers.py:794 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" -msgstr "Sub-ubicación" +msgstr "Sub-ubicaciones" -#: stock/serializers.py:1036 +#: stock/serializers.py:1069 msgid "Part must be salable" -msgstr "La parte debe ser vendible" +msgstr "" -#: stock/serializers.py:1040 +#: stock/serializers.py:1073 msgid "Item is allocated to a sales order" -msgstr "El artículo está asignado a una orden de venta" +msgstr "El artículo está asignado a un pedido de entrega" -#: stock/serializers.py:1044 +#: stock/serializers.py:1077 msgid "Item is allocated to a build order" -msgstr "El artículo está asignado a una orden de creación" +msgstr "" -#: stock/serializers.py:1068 +#: stock/serializers.py:1101 msgid "Customer to assign stock items" -msgstr "Cliente para asignar artículos de stock" +msgstr "Cliente a quien asignar los elementos de stock" -#: stock/serializers.py:1074 +#: stock/serializers.py:1107 msgid "Selected company is not a customer" msgstr "La empresa seleccionada no es un cliente" -#: stock/serializers.py:1082 +#: stock/serializers.py:1115 msgid "Stock assignment notes" -msgstr "Notas de asignación de stock" +msgstr "" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1125 stock/serializers.py:1379 msgid "A list of stock items must be provided" -msgstr "Debe proporcionarse una lista de artículos de stock" +msgstr "" -#: stock/serializers.py:1171 +#: stock/serializers.py:1204 msgid "Stock merging notes" -msgstr "Notas de fusión de stock" +msgstr "" -#: stock/serializers.py:1176 +#: stock/serializers.py:1209 msgid "Allow mismatched suppliers" msgstr "Permitir proveedores no coincidentes" -#: stock/serializers.py:1177 +#: stock/serializers.py:1210 msgid "Allow stock items with different supplier parts to be merged" -msgstr "Permitir fusionar artículos de stock con diferentes partes de proveedor" +msgstr "" -#: stock/serializers.py:1182 +#: stock/serializers.py:1215 msgid "Allow mismatched status" -msgstr "Permitir estado no coincidente" +msgstr "" -#: stock/serializers.py:1183 +#: stock/serializers.py:1216 msgid "Allow stock items with different status codes to be merged" -msgstr "Permitir fusionar artículos de stock con diferentes códigos de estado" +msgstr "" -#: stock/serializers.py:1193 +#: stock/serializers.py:1226 msgid "At least two stock items must be provided" -msgstr "Debe proporcionar al menos dos artículos de stock" +msgstr "" -#: stock/serializers.py:1260 +#: stock/serializers.py:1293 msgid "No Change" msgstr "" -#: stock/serializers.py:1289 +#: stock/serializers.py:1322 msgid "StockItem primary key value" -msgstr "Valor de clave primaria de Stock" +msgstr "" -#: stock/serializers.py:1308 +#: stock/serializers.py:1341 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1336 +#: stock/serializers.py:1369 msgid "Stock transaction notes" -msgstr "Notas de transacción de stock" +msgstr "" #: stock/templates/stock/item.html:17 msgid "Stock Tracking Information" -msgstr "Información de Seguimiento de Stock" +msgstr "" #: stock/templates/stock/item.html:63 msgid "Child Stock Items" -msgstr "Elementos de Stock Hijos" +msgstr "" #: stock/templates/stock/item.html:72 msgid "This stock item does not have any child items" -msgstr "Este artículo de stock no tiene ningún artículo secundario" +msgstr "" #: stock/templates/stock/item.html:81 #: stock/templates/stock/stock_sidebar.html:12 msgid "Test Data" -msgstr "Datos de Prueba" +msgstr "" #: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 msgid "Test Report" -msgstr "Informe de Prueba" +msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 msgid "Delete Test Data" -msgstr "Eliminar Datos de Prueba" +msgstr "" #: stock/templates/stock/item.html:93 msgid "Add Test Data" -msgstr "Añadir Datos de Prueba" +msgstr "" #: stock/templates/stock/item.html:125 msgid "Stock Item Notes" -msgstr "Notas del artículo de stock" +msgstr "" #: stock/templates/stock/item.html:140 msgid "Installed Stock Items" -msgstr "Elementos de Stock instalados" +msgstr "" -#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 msgid "Install Stock Item" -msgstr "Instalar artículo de stock" +msgstr "" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:274 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 msgid "Add Test Result" msgstr "" @@ -9188,7 +9283,7 @@ msgstr "" #: stock/templates/stock/item_base.html:51 msgid "Scan to Location" -msgstr "Escanear a la ubicación" +msgstr "" #: stock/templates/stock/item_base.html:59 #: stock/templates/stock/location.html:70 @@ -9198,89 +9293,89 @@ msgstr "Acciones de impresión" #: stock/templates/stock/item_base.html:75 msgid "Stock adjustment actions" -msgstr "Acciones de ajuste de stock" +msgstr "" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 msgid "Count stock" msgstr "Contar stock" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:1803 msgid "Add stock" -msgstr "Añadir stock" +msgstr "" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1776 +#: templates/js/translated/stock.js:1812 msgid "Remove stock" -msgstr "Eliminar stock" +msgstr "" #: stock/templates/stock/item_base.html:85 msgid "Serialize stock" -msgstr "Serializar stock" +msgstr "" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 msgid "Transfer stock" msgstr "Transferir stock" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1884 msgid "Assign to customer" msgstr "Asignar a cliente" #: stock/templates/stock/item_base.html:94 msgid "Return to stock" -msgstr "Regresar al stock" +msgstr "" #: stock/templates/stock/item_base.html:97 msgid "Uninstall stock item" -msgstr "Desinstalar artículo de stock" +msgstr "" #: stock/templates/stock/item_base.html:97 msgid "Uninstall" -msgstr "Desinstalar" +msgstr "" #: stock/templates/stock/item_base.html:101 msgid "Install stock item" -msgstr "Instalar artículo de stock" +msgstr "" #: stock/templates/stock/item_base.html:101 msgid "Install" -msgstr "Instalar" +msgstr "" #: stock/templates/stock/item_base.html:115 msgid "Convert to variant" -msgstr "Convertir a variante" +msgstr "" #: stock/templates/stock/item_base.html:118 msgid "Duplicate stock item" -msgstr "Duplicar artículo" +msgstr "" #: stock/templates/stock/item_base.html:120 msgid "Edit stock item" -msgstr "Editar artículo de almacén" +msgstr "" #: stock/templates/stock/item_base.html:123 msgid "Delete stock item" -msgstr "Eliminar artículo de stock" +msgstr "" #: stock/templates/stock/item_base.html:169 templates/InvenTree/search.html:139 #: templates/js/translated/build.js:2121 templates/navbar.html:38 msgid "Build" -msgstr "Construcción o Armado" +msgstr "" #: stock/templates/stock/item_base.html:193 msgid "Parent Item" -msgstr "Elemento padre" +msgstr "Elemento Superior" #: stock/templates/stock/item_base.html:211 msgid "No manufacturer set" -msgstr "Ningún fabricante establecido" +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 "No estás en la lista de propietarios de este artículo. Este artículo de stock no puede ser editado." +msgstr "" #: stock/templates/stock/item_base.html:252 #: stock/templates/stock/location.html:149 @@ -9293,19 +9388,19 @@ msgstr "" #: stock/templates/stock/item_base.html:271 msgid "This stock item is in production and cannot be edited." -msgstr "Este artículo de stock está en producción y no puede ser editado." +msgstr "" #: stock/templates/stock/item_base.html:272 msgid "Edit the stock item from the build view." -msgstr "Editar el artículo de stock desde la vista de construcción." +msgstr "" #: stock/templates/stock/item_base.html:287 msgid "This stock item is allocated to Sales Order" -msgstr "Este artículo de stock está asignado a la orden de venta" +msgstr "Este artículo de stock está asignado a la Petición de Entrega" #: stock/templates/stock/item_base.html:295 msgid "This stock item is allocated to Build Order" -msgstr "Este artículo de stock está asignado al orden de construcción" +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" @@ -9313,58 +9408,58 @@ msgstr "" #: stock/templates/stock/item_base.html:317 msgid "previous page" -msgstr "página anterior" +msgstr "" #: stock/templates/stock/item_base.html:317 msgid "Navigate to previous serial number" -msgstr "Navegar al número de serie anterior" +msgstr "" #: stock/templates/stock/item_base.html:326 msgid "next page" -msgstr "página siguiente" +msgstr "" #: stock/templates/stock/item_base.html:326 msgid "Navigate to next serial number" -msgstr "Navegar al siguiente número de serie" +msgstr "" #: stock/templates/stock/item_base.html:340 msgid "Available Quantity" -msgstr "Cantidad disponible" +msgstr "" #: stock/templates/stock/item_base.html:398 #: templates/js/translated/build.js:2378 msgid "No location set" -msgstr "Ubicación no establecida" +msgstr "" #: stock/templates/stock/item_base.html:413 msgid "Tests" -msgstr "Pruebas" +msgstr "" #: stock/templates/stock/item_base.html:419 msgid "This stock item has not passed all required tests" -msgstr "Este artículo de stock no ha pasado todas las pruebas requeridas" +msgstr "" #: stock/templates/stock/item_base.html:437 #, python-format msgid "This StockItem expired on %(item.expiry_date)s" -msgstr "Este ítem expiró el %(item.expiry_date)s" +msgstr "" #: stock/templates/stock/item_base.html:437 #: templates/js/translated/table_filters.js:435 users/models.py:163 msgid "Expired" -msgstr "Expirado" +msgstr "" #: stock/templates/stock/item_base.html:439 #, python-format msgid "This StockItem expires on %(item.expiry_date)s" -msgstr "Este ítem expira el %(item.expiry_date)s" +msgstr "" #: stock/templates/stock/item_base.html:455 msgid "No stocktake performed" msgstr "Ningún inventario realizado" #: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1915 +#: templates/js/translated/stock.js:1951 msgid "stock item" msgstr "" @@ -9382,15 +9477,15 @@ msgstr "" #: stock/templates/stock/item_base.html:616 msgid "Select one of the part variants listed below." -msgstr "Seleccione una de las variantes de parte listadas a continuación." +msgstr "" #: stock/templates/stock/item_base.html:619 msgid "Warning" -msgstr "Advertencia" +msgstr "" #: stock/templates/stock/item_base.html:620 msgid "This action cannot be easily undone" -msgstr "Esta acción no se puede deshacer fácilmente" +msgstr "" #: stock/templates/stock/item_base.html:628 msgid "Convert Stock Item" @@ -9402,11 +9497,11 @@ msgstr "" #: stock/templates/stock/item_serialize.html:5 msgid "Create serialized items from this stock item." -msgstr "Crear artículos serializados a partir de este artículo de stock." +msgstr "" #: stock/templates/stock/item_serialize.html:7 msgid "Select quantity to serialize, and unique serial numbers." -msgstr "Seleccione la cantidad para serializar y números de serie únicos." +msgstr "" #: stock/templates/stock/location.html:38 msgid "Perform stocktake for this stock location" @@ -9414,15 +9509,15 @@ msgstr "" #: stock/templates/stock/location.html:45 msgid "Locate stock location" -msgstr "" +msgstr "Localizar ubicación de stock" #: stock/templates/stock/location.html:63 msgid "Scan stock items into this location" -msgstr "" +msgstr "Escanear artículos de stock en esta ubicación" #: stock/templates/stock/location.html:63 msgid "Scan In Stock Items" -msgstr "" +msgstr "Buscar Artículos en Stock" #: stock/templates/stock/location.html:64 msgid "Scan stock container into this location" @@ -9430,7 +9525,7 @@ msgstr "" #: stock/templates/stock/location.html:64 msgid "Scan In Container" -msgstr "Escanear en contenedor" +msgstr "Buscar en Contenedor" #: stock/templates/stock/location.html:75 msgid "Print Location Report" @@ -9454,22 +9549,22 @@ msgstr "Ubicación de stock superior" #: stock/templates/stock/location.html:144 msgid "Location Owner" -msgstr "Propietario de la ubicación" +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 "No estás en la lista de propietarios de esta ubicación. Esta ubicación de stock no puede ser editada." +msgstr "" #: stock/templates/stock/location.html:217 msgid "Create new stock location" -msgstr "Crear nueva ubicación de stock" +msgstr "" #: stock/templates/stock/location.html:218 msgid "New Location" -msgstr "Nueva Ubicación" +msgstr "Nueva ubicación" #: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2536 +#: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" @@ -9487,52 +9582,52 @@ msgstr "" #: stock/templates/stock/stock_app_base.html:16 msgid "Loading..." -msgstr "Cargando..." +msgstr "" #: stock/templates/stock/stock_sidebar.html:5 msgid "Stock Tracking" -msgstr "Seguimiento de Stock" +msgstr "" #: stock/templates/stock/stock_sidebar.html:8 msgid "Allocations" -msgstr "Asignaciones" +msgstr "" #: stock/templates/stock/stock_sidebar.html:20 msgid "Child Items" -msgstr "Elementos secundarios" +msgstr "" #: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7 msgid "Permission Denied" -msgstr "Permiso Denegado" +msgstr "" #: templates/403.html:15 msgid "You do not have permission to view this page." -msgstr "No tiene permisos para ver esta página." +msgstr "" #: templates/403_csrf.html:11 msgid "Authentication Failure" -msgstr "Falla de autenticación" +msgstr "" #: templates/403_csrf.html:14 msgid "You have been logged out from InvenTree." -msgstr "Has cerrado sesión en InvenTree." +msgstr "" #: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 #: templates/navbar.html:150 msgid "Login" -msgstr "Iniciar sesión" +msgstr "" #: templates/404.html:6 templates/404.html:12 msgid "Page Not Found" -msgstr "Página No Encontrada" +msgstr "" #: templates/404.html:15 msgid "The requested page does not exist" -msgstr "La página solicitada no existe" +msgstr "" #: templates/500.html:6 templates/500.html:12 msgid "Internal Server Error" -msgstr "Error Interno Del Servidor" +msgstr "" #: templates/500.html:15 #, python-format @@ -9541,19 +9636,19 @@ msgstr "" #: templates/500.html:16 msgid "Refer to the error log in the admin interface for further details" -msgstr "Consulte el registro de errores en la interfaz de administración para más detalles" +msgstr "" #: templates/503.html:11 templates/503.html:33 msgid "Site is in Maintenance" -msgstr "El Sitio está en Mantenimiento" +msgstr "" #: templates/503.html:39 msgid "The site is currently in maintenance and should be up again soon!" -msgstr "El sitio está actualmente en mantenimiento y debería estar listo pronto!" +msgstr "" #: templates/InvenTree/index.html:7 msgid "Index" -msgstr "Índice" +msgstr "" #: templates/InvenTree/index.html:39 msgid "Subscribed Parts" @@ -9625,22 +9720,22 @@ msgstr "" #: templates/InvenTree/notifications/history.html:9 msgid "Notification History" -msgstr "Historial de notificaciones" +msgstr "" #: templates/InvenTree/notifications/history.html:13 #: templates/InvenTree/notifications/history.html:14 #: templates/InvenTree/notifications/notifications.html:75 msgid "Delete Notifications" -msgstr "Eliminar notificaciones" +msgstr "" #: templates/InvenTree/notifications/inbox.html:9 msgid "Pending Notifications" -msgstr "Notificaciones pendientes" +msgstr "" #: templates/InvenTree/notifications/inbox.html:13 #: templates/InvenTree/notifications/inbox.html:14 msgid "Mark all as read" -msgstr "Marcar todos como leidos" +msgstr "" #: templates/InvenTree/notifications/notifications.html:10 #: templates/InvenTree/notifications/sidebar.html:5 @@ -9659,7 +9754,7 @@ msgstr "" #: templates/InvenTree/notifications/notifications.html:65 msgid "Delete all read notifications" -msgstr "Borrar todas las notificaciones leídas" +msgstr "" #: templates/InvenTree/notifications/notifications.html:89 #: templates/js/translated/notification.js:85 @@ -9668,40 +9763,40 @@ msgstr "" #: templates/InvenTree/notifications/sidebar.html:8 msgid "Inbox" -msgstr "Bandeja de Entrada" +msgstr "" #: templates/InvenTree/notifications/sidebar.html:10 msgid "History" -msgstr "Historial" +msgstr "" #: templates/InvenTree/search.html:8 msgid "Search Results" -msgstr "Resultados de Búsqueda" +msgstr "" #: templates/InvenTree/settings/barcode.html:8 msgid "Barcode Settings" -msgstr "Ajustes de Código de Barras" +msgstr "Ajustes de códigos de barras" #: templates/InvenTree/settings/build.html:8 msgid "Build Order Settings" -msgstr "Configuración de Pedido de Trabajo" +msgstr "" #: templates/InvenTree/settings/category.html:7 msgid "Category Settings" -msgstr "Ajustes de Categoría" +msgstr "Ajustes de categorías" #: templates/InvenTree/settings/global.html:8 msgid "Server Settings" -msgstr "Configuración del Servidor" +msgstr "" #: templates/InvenTree/settings/label.html:8 #: templates/InvenTree/settings/user_labels.html:9 msgid "Label Settings" -msgstr "Ajustes de Etiqueta" +msgstr "Ajustes de etiquetas" #: templates/InvenTree/settings/login.html:8 msgid "Login Settings" -msgstr "Configuración de Inicio de Sesión" +msgstr "Inicio de sesión" #: templates/InvenTree/settings/login.html:15 msgid "Outgoing email has not been configured. Some login and sign-up features may not work correctly!" @@ -9710,25 +9805,25 @@ msgstr "" #: templates/InvenTree/settings/login.html:25 templates/account/signup.html:5 #: templates/socialaccount/signup.html:5 msgid "Signup" -msgstr "Registrarse" +msgstr "" #: templates/InvenTree/settings/login.html:34 msgid "Single Sign On" -msgstr "Inicio de sesión único" +msgstr "" #: templates/InvenTree/settings/mixins/settings.html:5 #: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 msgid "Settings" -msgstr "Ajustes" +msgstr "" #: templates/InvenTree/settings/mixins/urls.html:5 msgid "URLs" -msgstr "Direcciones URL" +msgstr "" #: templates/InvenTree/settings/mixins/urls.html:8 #, python-format msgid "The Base-URL for this plugin is %(base)s." -msgstr "La URL base para este plugin es %(base)s." +msgstr "" #: templates/InvenTree/settings/mixins/urls.html:14 msgid "URL" @@ -9736,12 +9831,12 @@ msgstr "URL" #: templates/InvenTree/settings/mixins/urls.html:23 msgid "Open in new tab" -msgstr "Abrir en una pestaña nueva" +msgstr "" #: templates/InvenTree/settings/notifications.html:9 #: templates/InvenTree/settings/user_notifications.html:9 msgid "Notification Settings" -msgstr "" +msgstr "Ajustes de notificaciones" #: templates/InvenTree/settings/notifications.html:18 msgid "Slug" @@ -9749,19 +9844,19 @@ msgstr "" #: templates/InvenTree/settings/part.html:7 msgid "Part Settings" -msgstr "Ajustes de Parte" +msgstr "" #: templates/InvenTree/settings/part.html:42 msgid "Part Import" -msgstr "Importar Parte" +msgstr "" #: templates/InvenTree/settings/part.html:46 msgid "Import Part" -msgstr "Importar Parte" +msgstr "" #: templates/InvenTree/settings/part_parameters.html:20 msgid "Part Parameter Templates" -msgstr "Plantillas de Parámetros de Partes" +msgstr "" #: templates/InvenTree/settings/part_stocktake.html:7 msgid "Stocktake Settings" @@ -9778,102 +9873,102 @@ msgstr "" #: templates/InvenTree/settings/physical_units.html:12 msgid "Add Unit" -msgstr "Añadir unidad" +msgstr "" #: templates/InvenTree/settings/plugin.html:9 #: templates/InvenTree/settings/sidebar.html:64 msgid "Plugin Settings" -msgstr "Ajustes del complemento" +msgstr "Ajustes de plugins" #: 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 "Cambiar la configuración de abajo requiere reiniciar inmediatamente el servidor. No lo cambie mientras esté en uso activo." +msgstr "Cambiar la siguiente configuración requerirá reiniciar inmediatamente el servidor. Tenga precaución al hacer cambios con usuarios activos." #: templates/InvenTree/settings/plugin.html:36 #: templates/InvenTree/settings/sidebar.html:66 msgid "Plugins" -msgstr "Complementos" +msgstr "Plugins" #: templates/InvenTree/settings/plugin.html:42 #: templates/InvenTree/settings/plugin.html:43 #: templates/js/translated/plugin.js:151 msgid "Install Plugin" -msgstr "Instalar complemento" +msgstr "Instalar plugin" #: templates/InvenTree/settings/plugin.html:45 #: templates/InvenTree/settings/plugin.html:46 #: templates/js/translated/plugin.js:224 msgid "Reload Plugins" -msgstr "Recargar Plugins" +msgstr "" #: templates/InvenTree/settings/plugin.html:56 msgid "External plugins are not enabled for this InvenTree installation" -msgstr "Los complementos externos no están habilitados para esta instalación de InvenTree" +msgstr "" #: templates/InvenTree/settings/plugin.html:71 msgid "Plugin Error Stack" -msgstr "Pila de error de complementos" +msgstr "" #: templates/InvenTree/settings/plugin.html:80 msgid "Stage" -msgstr "Etapa" +msgstr "" #: templates/InvenTree/settings/plugin.html:82 #: templates/js/translated/notification.js:76 msgid "Message" -msgstr "Mensaje" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:16 msgid "Plugin information" -msgstr "Información de Plugin" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:47 msgid "no version information supplied" -msgstr "no se proporcionó información de versión" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:61 msgid "License" -msgstr "Licencia" +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 "La información del código es extraída del último git commit para este plugin. Puede que no refleje los números de versión oficiales o la información, pero sí el código actual en ejecución." +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:76 msgid "Package information" -msgstr "Información del paquete" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:82 msgid "Installation method" -msgstr "Método de instalación" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:85 msgid "This plugin was installed as a package" -msgstr "Este plugin fue instalado como un paquete" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:87 msgid "This plugin was found in a local server path" -msgstr "Este complemento fue encontrado en una ruta del servidor local" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:93 msgid "Installation path" -msgstr "Ruta de instalación" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:100 #: templates/js/translated/plugin.js:68 #: templates/js/translated/table_filters.js:496 msgid "Builtin" -msgstr "Integrado" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:101 msgid "This is a builtin plugin which cannot be disabled" -msgstr "Este es un complemento incorporado que no puede ser desactivado" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:107 #: templates/js/translated/plugin.js:72 #: templates/js/translated/table_filters.js:500 msgid "Sample" -msgstr "Muestra" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:108 msgid "This is a sample plugin" @@ -9881,25 +9976,25 @@ msgstr "" #: templates/InvenTree/settings/plugin_settings.html:113 msgid "Commit Author" -msgstr "Autor del Commit" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:117 #: templates/about.html:36 msgid "Commit Date" -msgstr "Fecha del Commit" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:121 #: templates/about.html:29 msgid "Commit Hash" -msgstr "Hash de Commit" +msgstr "" #: templates/InvenTree/settings/plugin_settings.html:125 msgid "Commit Message" -msgstr "Mensaje de Commit" +msgstr "" #: templates/InvenTree/settings/po.html:7 msgid "Purchase Order Settings" -msgstr "Ajustes de Orden de Compra" +msgstr "" #: templates/InvenTree/settings/pricing.html:7 msgid "Pricing Settings" @@ -9907,39 +10002,39 @@ msgstr "Configuración de Precios" #: templates/InvenTree/settings/pricing.html:34 msgid "Exchange Rates" -msgstr "Tipos de Cambio" +msgstr "Conversión de divisas" #: templates/InvenTree/settings/pricing.html:38 msgid "Update Now" -msgstr "Actualizar Ahora" +msgstr "Actualizar" #: templates/InvenTree/settings/pricing.html:46 #: templates/InvenTree/settings/pricing.html:50 msgid "Last Update" -msgstr "Última Actualización" +msgstr "Última actualización" #: templates/InvenTree/settings/pricing.html:50 msgid "Never" -msgstr "Nunca" +msgstr "" #: templates/InvenTree/settings/project_codes.html:8 msgid "Project Code Settings" -msgstr "Configuración del código de proyecto" +msgstr "" #: templates/InvenTree/settings/project_codes.html:21 #: templates/InvenTree/settings/sidebar.html:33 msgid "Project Codes" -msgstr "Códigos del proyecto" +msgstr "" #: templates/InvenTree/settings/project_codes.html:25 #: templates/InvenTree/settings/settings_staff_js.html:216 msgid "New Project Code" -msgstr "Nuevo código de proyecto" +msgstr "" #: templates/InvenTree/settings/report.html:8 #: templates/InvenTree/settings/user_reporting.html:9 msgid "Report Settings" -msgstr "Ajustes del Informe" +msgstr "Ajustes de informes" #: templates/InvenTree/settings/returns.html:7 msgid "Return Order Settings" @@ -9947,11 +10042,11 @@ msgstr "" #: templates/InvenTree/settings/setting.html:31 msgid "No value set" -msgstr "Ningún valor establecido" +msgstr "" #: templates/InvenTree/settings/setting.html:46 msgid "Edit setting" -msgstr "Editar ajustes" +msgstr "" #: templates/InvenTree/settings/settings_js.html:58 msgid "Edit Plugin Setting" @@ -9978,7 +10073,7 @@ msgstr "" #: templates/js/translated/part.js:392 templates/js/translated/pricing.js:629 #: templates/js/translated/stock.js:245 users/models.py:411 msgid "Delete" -msgstr "Eliminar" +msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:95 msgid "Edit Custom Unit" @@ -10063,50 +10158,50 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:37 msgid "New Location Type" msgstr "" #: templates/InvenTree/settings/sidebar.html:6 #: templates/InvenTree/settings/user_settings.html:9 msgid "User Settings" -msgstr "Configuración del Usuario" +msgstr "Ajustes del usuario" #: templates/InvenTree/settings/sidebar.html:9 msgid "Account" -msgstr "Cuenta" +msgstr "" #: templates/InvenTree/settings/sidebar.html:11 msgid "Display" -msgstr "Mostrar" +msgstr "" #: templates/InvenTree/settings/sidebar.html:13 msgid "Home Page" -msgstr "Página de Inicio" +msgstr "" #: templates/InvenTree/settings/sidebar.html:15 #: templates/js/translated/forms.js:2159 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 "Buscar" +msgstr "" #: templates/InvenTree/settings/sidebar.html:19 #: templates/InvenTree/settings/sidebar.html:43 msgid "Reporting" -msgstr "Informando" +msgstr "Informes" #: templates/InvenTree/settings/sidebar.html:24 msgid "Global Settings" -msgstr "Configuración Global" +msgstr "" #: templates/InvenTree/settings/sidebar.html:27 templates/stats.html:9 msgid "Server" -msgstr "Servidor" +msgstr "" #: templates/InvenTree/settings/sidebar.html:41 msgid "Labels" -msgstr "Etiquetas" +msgstr "" #: templates/InvenTree/settings/sidebar.html:45 msgid "Categories" @@ -10114,25 +10209,25 @@ msgstr "Categorías" #: templates/InvenTree/settings/so.html:7 msgid "Sales Order Settings" -msgstr "Configuración de orden de venta" +msgstr "Configuración de Pedidos de Entrega" #: templates/InvenTree/settings/stock.html:7 msgid "Stock Settings" msgstr "Configuración de Stock" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:33 msgid "Stock Location Types" msgstr "" #: templates/InvenTree/settings/user.html:13 msgid "Account Settings" -msgstr "Configuración de la Cuenta" +msgstr "Ajustes de la cuenta" #: 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 "Cambiar Contraseña" +msgstr "" #: templates/InvenTree/settings/user.html:33 msgid "Username" @@ -10148,28 +10243,28 @@ msgstr "Apellido" #: templates/InvenTree/settings/user.html:55 msgid "The following email addresses are associated with your account:" -msgstr "Las siguientes direcciones de correo electrónico están asociadas con tu cuenta:" +msgstr "" #: templates/InvenTree/settings/user.html:76 msgid "Verified" -msgstr "Verificado" +msgstr "" #: templates/InvenTree/settings/user.html:78 msgid "Unverified" -msgstr "Sin verificar" +msgstr "" #: templates/InvenTree/settings/user.html:80 #: templates/js/translated/company.js:947 msgid "Primary" -msgstr "Principal" +msgstr "" #: templates/InvenTree/settings/user.html:86 msgid "Make Primary" -msgstr "Hacer Principal" +msgstr "" #: templates/InvenTree/settings/user.html:87 msgid "Re-send Verification" -msgstr "Reenviar verificación" +msgstr "" #: templates/InvenTree/settings/user.html:96 msgid "Warning:" @@ -10177,23 +10272,23 @@ msgstr "Advertencia:" #: 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 "Actualmente no tiene ninguna dirección de correo electrónico configurada. Realmente deberías añadir una dirección de correo electrónico para que puedas recibir notificaciones, restablecer tu contraseña, etc." +msgstr "Actualmente no tienes ninguna dirección de correo electrónico configurada. Es necesario tener una para recibir notificaciones, restablecer tu contraseña, etc." #: templates/InvenTree/settings/user.html:105 msgid "Add Email Address" -msgstr "Añadir correo electrónico" +msgstr "Añadir dirección de correo electrónico" #: templates/InvenTree/settings/user.html:110 msgid "Add Email" -msgstr "Agregar Email" +msgstr "Añadir dirección" #: templates/InvenTree/settings/user.html:120 msgid "Multifactor" -msgstr "Multifactor" +msgstr "Autenticación multifactor" #: templates/InvenTree/settings/user.html:125 msgid "You have these factors available:" -msgstr "Tienes estos factores disponibles:" +msgstr "" #: templates/InvenTree/settings/user.html:135 msgid "TOTP" @@ -10201,11 +10296,11 @@ msgstr "" #: templates/InvenTree/settings/user.html:141 msgid "Static" -msgstr "Estático" +msgstr "" #: templates/InvenTree/settings/user.html:150 msgid "Multifactor authentication is not configured for your account" -msgstr "La autenticación multifactor no está configurada para su cuenta" +msgstr "" #: templates/InvenTree/settings/user.html:157 msgid "Change factors" @@ -10213,31 +10308,31 @@ msgstr "Cambiar factores" #: templates/InvenTree/settings/user.html:158 msgid "Setup multifactor" -msgstr "Configurar factor múltiple" +msgstr "Configurar factor" #: templates/InvenTree/settings/user.html:160 msgid "Remove multifactor" -msgstr "Remover factor múltiple" +msgstr "Eliminar factor" #: templates/InvenTree/settings/user.html:168 msgid "Active Sessions" -msgstr "Sesiones Activas" +msgstr "Sesiones activas" #: templates/InvenTree/settings/user.html:174 msgid "Log out active sessions (except this one)" -msgstr "Cerrar sesiones activas (excepto esta)" +msgstr "Expulsa a los usuarios activos (excepto a ti)" #: templates/InvenTree/settings/user.html:175 msgid "Log Out Active Sessions" -msgstr "Cerrar Sesiones Activas" +msgstr "Cerrar sesiones activas" #: templates/InvenTree/settings/user.html:184 msgid "unknown on unknown" -msgstr "desconocido en desconocido" +msgstr "" #: templates/InvenTree/settings/user.html:185 msgid "unknown" -msgstr "desconocido" +msgstr "" #: templates/InvenTree/settings/user.html:189 msgid "IP Address" @@ -10249,17 +10344,17 @@ msgstr "Dispositivo" #: templates/InvenTree/settings/user.html:191 msgid "Last Activity" -msgstr "Última Actividad" +msgstr "Última actividad" #: templates/InvenTree/settings/user.html:204 #, python-format msgid "%(time)s ago (this session)" -msgstr "%(time)s atrás (esta sesión)" +msgstr "" #: templates/InvenTree/settings/user.html:206 #, python-format msgid "%(time)s ago" -msgstr "%(time)s atrás" +msgstr "" #: templates/InvenTree/settings/user.html:218 msgid "Do you really want to remove the selected email address?" @@ -10267,7 +10362,7 @@ msgstr "" #: templates/InvenTree/settings/user_display.html:9 msgid "Display Settings" -msgstr "Ajuste de Visualización" +msgstr "Ajustes de Visualización" #: templates/InvenTree/settings/user_display.html:29 msgid "Theme Settings" @@ -10300,7 +10395,7 @@ msgstr "No hay traducciones disponibles" #: templates/InvenTree/settings/user_display.html:92 msgid "Set Language" -msgstr "Definir Idioma" +msgstr "Establecer Idioma" #: templates/InvenTree/settings/user_display.html:95 msgid "Some languages are not complete" @@ -10316,7 +10411,7 @@ msgstr "y oculto." #: templates/InvenTree/settings/user_display.html:99 msgid "Show them too" -msgstr "Mostrar también" +msgstr "Mostrarlos también" #: templates/InvenTree/settings/user_display.html:106 msgid "Help the translation efforts!" @@ -10328,51 +10423,51 @@ msgstr "La aplicación web es traducida por una comunidad de voluntarios a trav #: templates/InvenTree/settings/user_display.html:108 msgid "InvenTree Translation Project" -msgstr "Proyecto de traducción de InvenTree" +msgstr "Participar en el Proyecto de Traducción de InvenTree" #: templates/InvenTree/settings/user_homepage.html:9 msgid "Home Page Settings" -msgstr "Ajustes de página de inicio" +msgstr "Ajustes de la página de inicio" #: templates/InvenTree/settings/user_search.html:9 msgid "Search Settings" -msgstr "Ajustes de Búsqueda" +msgstr "Ajustes de búsqueda" #: templates/InvenTree/settings/user_sso.html:9 msgid "Single Sign On Accounts" -msgstr "Cuentas de inicio de sesión único" +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 "Puede iniciar sesión en su cuenta utilizando cualquiera de las siguientes cuentas de terceros:" +msgstr "" #: templates/InvenTree/settings/user_sso.html:52 msgid "There are no social network accounts connected to this account." -msgstr "No hay cuentas de redes sociales conectadas a esta cuenta." +msgstr "" #: templates/InvenTree/settings/user_sso.html:58 msgid "Add SSO Account" -msgstr "Añadir cuenta SSO" +msgstr "" #: templates/InvenTree/settings/user_sso.html:67 msgid "Single Sign On is not enabled for this server" -msgstr "El inicio de sesión único no está habilitado para este servidor" +msgstr "" #: templates/about.html:9 msgid "InvenTree Version" -msgstr "Versión de InvenTree" +msgstr "" #: templates/about.html:14 msgid "Development Version" -msgstr "Versión de Desarrollo" +msgstr "" #: templates/about.html:17 msgid "Up to Date" -msgstr "Actualizado" +msgstr "" #: templates/about.html:19 msgid "Update Available" -msgstr "Actualización Disponible" +msgstr "" #: templates/about.html:43 msgid "Commit Branch" @@ -10380,99 +10475,99 @@ msgstr "" #: templates/about.html:49 msgid "InvenTree Documentation" -msgstr "Documentación de InvenTree" +msgstr "" #: templates/about.html:54 msgid "API Version" -msgstr "Versión API" +msgstr "" #: templates/about.html:59 msgid "Python Version" -msgstr "Versión de Python" +msgstr "" #: templates/about.html:64 msgid "Django Version" -msgstr "Versión de Django" +msgstr "" #: templates/about.html:69 msgid "View Code on GitHub" -msgstr "Ver código en GitHub" +msgstr "" #: templates/about.html:74 msgid "Credits" -msgstr "Créditos" +msgstr "" #: templates/about.html:79 msgid "Mobile App" -msgstr "Aplicación Móvil" +msgstr "" #: templates/about.html:84 msgid "Submit Bug Report" -msgstr "Enviar Informe de Error" +msgstr "" #: templates/about.html:91 templates/clip.html:4 #: templates/js/translated/helpers.js:585 msgid "copy to clipboard" -msgstr "copiar al portapapeles" +msgstr "" #: templates/about.html:91 msgid "copy version information" -msgstr "copiar información de versión" +msgstr "" #: templates/account/base.html:66 templates/navbar.html:17 msgid "InvenTree logo" -msgstr "Logo de InvenTree" +msgstr "" #: templates/account/email_confirm.html:6 #: templates/account/email_confirm.html:9 msgid "Confirm Email Address" -msgstr "Confirmar Email" +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 "Confirme que %(email)s es una dirección de correo electrónico para el usuario %(user_display)s." +msgstr "" #: templates/account/email_confirm.html:21 templates/js/translated/forms.js:774 msgid "Confirm" -msgstr "Confirmar" +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 "Este enlace de confirmación de correo electrónico ha caducado o no es válido. Por favor, envíe un nuevo correo electrónico de solicitud de confirmación." +msgstr "" #: templates/account/login.html:6 templates/account/login.html:17 #: templates/account/login.html:38 templates/socialaccount/login.html:5 msgid "Sign In" -msgstr "Ingresar" +msgstr "" #: templates/account/login.html:21 msgid "Not a member?" -msgstr "¿No es un miembro?" +msgstr "" #: templates/account/login.html:23 templates/account/signup.html:11 #: templates/account/signup.html:22 templates/socialaccount/signup.html:8 #: templates/socialaccount/signup.html:23 msgid "Sign Up" -msgstr "Registrarse" +msgstr "" #: templates/account/login.html:45 msgid "Forgot Password?" -msgstr "¿Ha olvidado la contraseña?" +msgstr "" #: templates/account/login.html:53 msgid "or log in with" -msgstr "o iniciar sesión con" +msgstr "" #: templates/account/logout.html:5 templates/account/logout.html:8 #: templates/account/logout.html:20 msgid "Sign Out" -msgstr "Cerrar Sesión" +msgstr "" #: templates/account/logout.html:10 msgid "Are you sure you want to sign out?" -msgstr "¿Está seguro de que desea salir?" +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 @@ -10482,41 +10577,41 @@ msgstr "Volver al sitio" #: templates/account/password_reset.html:5 #: templates/account/password_reset.html:12 msgid "Password Reset" -msgstr "Restablecer Contraseña" +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 "¿Olvidó su contraseña? Introduzca su dirección de correo electrónico a continuación y le enviaremos un correo electrónico que le permita restablecerla." +msgstr "" #: templates/account/password_reset.html:23 msgid "Reset My Password" -msgstr "Reestablecer mi Contraseña" +msgstr "" #: templates/account/password_reset.html:27 templates/account/signup.html:37 msgid "This function is currently disabled. Please contact an administrator." -msgstr "Esta función está actualmente deshabilitada. Por favor, póngase en contacto con un administrador." +msgstr "" #: templates/account/password_reset_from_key.html:7 msgid "Bad Token" -msgstr "Token Incorrecto" +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 "El enlace de restablecimiento de contraseña no era válido, posiblemente porque ya ha sido utilizado. Por favor, solicite un nuevo restablecimiento de contraseña." +msgstr "" #: templates/account/password_reset_from_key.html:18 msgid "Change password" -msgstr "Cambiar contraseña" +msgstr "" #: templates/account/password_reset_from_key.html:22 msgid "Your password is now changed." -msgstr "Se ha cambiado la contraseña." +msgstr "" #: templates/account/signup.html:13 #, python-format msgid "Already have an account? Then please sign in." -msgstr "¿Ya tienes una cuenta? Entonces inicia sesión." +msgstr "" #: templates/account/signup.html:28 msgid "Use a SSO-provider for signup" @@ -10539,23 +10634,23 @@ msgstr "" #: templates/admin_button.html:8 msgid "View in administration panel" -msgstr "Ver en el panel de administración" +msgstr "" #: templates/allauth_2fa/authenticate.html:5 msgid "Two-Factor Authentication" -msgstr "Autenticación de dos factores" +msgstr "" #: templates/allauth_2fa/authenticate.html:13 msgid "Authenticate" -msgstr "Autenticar" +msgstr "" #: templates/allauth_2fa/backup_tokens.html:6 msgid "Two-Factor Authentication Backup Tokens" -msgstr "Tokens de autenticación de doble factor" +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 "Se han generado tokens de copia de seguridad, pero no se revelan aquí por razones de seguridad. Pulse el botón de abajo para generar nuevos." +msgstr "" #: templates/allauth_2fa/backup_tokens.html:20 msgid "No backup tokens are available. Press the button below to generate some." @@ -10563,23 +10658,23 @@ msgstr "" #: templates/allauth_2fa/backup_tokens.html:28 msgid "Generate Tokens" -msgstr "Generar tokens" +msgstr "" #: templates/allauth_2fa/remove.html:6 msgid "Disable Two-Factor Authentication" -msgstr "Deshabilitar autenticación de dos factores" +msgstr "" #: templates/allauth_2fa/remove.html:9 msgid "Are you sure?" -msgstr "¿Está seguro?" +msgstr "" #: templates/allauth_2fa/remove.html:17 msgid "Disable 2FA" -msgstr "Desactivar 2FA" +msgstr "" #: templates/allauth_2fa/setup.html:6 msgid "Setup Two-Factor Authentication" -msgstr "Configurar Autenticación de Dos Factores" +msgstr "Configurar autenticación de dos factores" #: templates/allauth_2fa/setup.html:10 msgid "Step 1" @@ -10595,7 +10690,7 @@ msgstr "Paso 2" #: templates/allauth_2fa/setup.html:27 msgid "Input a token generated by the app:" -msgstr "Ingrese un token generado por la aplicación:" +msgstr "Ingresa un token generado por la aplicación:" #: templates/allauth_2fa/setup.html:37 msgid "Verify" @@ -10607,23 +10702,23 @@ msgstr "Agregar Enlace" #: templates/attachment_button.html:7 templates/js/translated/attachment.js:48 msgid "Add Attachment" -msgstr "Añadir archivo adjunto" +msgstr "Añadir Archivo Adjunto" #: templates/barcode_data.html:5 msgid "Barcode Identifier" -msgstr "Identificador de Código de Barras" +msgstr "" #: templates/base.html:103 msgid "Server Restart Required" -msgstr "Reinicio del Servidor Requerido" +msgstr "" #: templates/base.html:106 msgid "A configuration option has been changed which requires a server restart" -msgstr "Se ha cambiado una opción de configuración que requiere reiniciar el servidor" +msgstr "" #: templates/base.html:106 templates/base.html:116 msgid "Contact your system administrator for further information" -msgstr "Póngase en contacto con su administrador para más información" +msgstr "" #: templates/base.html:113 msgid "Pending Database Migrations" @@ -10642,43 +10737,43 @@ msgstr "" #: templates/email/purchase_order_received.html:9 #: templates/email/return_order_received.html:9 msgid "Click on the following link to view this order" -msgstr "" +msgstr "Haga clic en el siguiente enlace para ver este pedido" #: templates/email/build_order_required_stock.html:7 msgid "Stock is required for the following build order" -msgstr "Se requiere stock para el siguiente orden de trabajo" +msgstr "" #: templates/email/build_order_required_stock.html:8 #, python-format msgid "Build order %(build)s - building %(quantity)s x %(part)s" -msgstr "Orden de trabajo %(build)s - creando %(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 "Haga clic en el siguiente enlace para ver esta orden de trabajo" +msgstr "" #: templates/email/build_order_required_stock.html:14 msgid "The following parts are low on required stock" -msgstr "Las siguientes partes están bajas en stock requerido" +msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" -msgstr "Cantidad requerida" +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 "Estás recibiendo este correo electrónico porque estás suscrito a las notificaciones de esta parte " +msgstr "" #: templates/email/low_stock_notification.html:9 msgid "Click on the following link to view this part" -msgstr "Haga clic en el siguiente enlace para ver esta parte" +msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" -msgstr "Cantidad Mínima" +msgstr "" #: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 msgid "No Response" @@ -10827,7 +10922,7 @@ msgstr "" #: templates/js/translated/barcode.js:420 templates/navbar.html:114 msgid "Scan Barcode" -msgstr "Escanear código de barras" +msgstr "" #: templates/js/translated/barcode.js:458 msgid "No URL in response" @@ -11051,62 +11146,66 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "" @@ -11389,7 +11488,7 @@ msgstr "" #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 -#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11401,7 +11500,7 @@ msgstr "" msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006 +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" @@ -11449,29 +11548,29 @@ msgstr "" msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "" @@ -11790,7 +11889,7 @@ msgstr "" #: templates/js/translated/forms.js:1473 templates/modals.html:19 #: templates/modals.html:43 msgid "Form errors exist" -msgstr "Existen errores en el formulario" +msgstr "" #: templates/js/translated/forms.js:1971 msgid "No results found" @@ -11804,15 +11903,15 @@ msgstr "" msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3087 +#: templates/js/translated/forms.js:3103 msgid "Select Columns" msgstr "" @@ -11893,7 +11992,7 @@ msgstr "" #: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 #: templates/modals.html:28 templates/modals.html:51 msgid "Submit" -msgstr "Enviar" +msgstr "Aceptar" #: templates/js/translated/modals.js:156 msgid "Form Title" @@ -11975,7 +12074,7 @@ msgstr "" #: templates/js/translated/notification.js:296 templates/notifications.html:12 msgid "Notifications will load here" -msgstr "Las notificaciones cargarán aquí" +msgstr "" #: templates/js/translated/order.js:89 msgid "Add Extra Line Item" @@ -12289,7 +12388,7 @@ msgid "No category" msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 -#: templates/js/translated/stock.js:2633 +#: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" @@ -12301,7 +12400,7 @@ msgstr "" msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" @@ -12313,64 +12412,64 @@ msgstr "" msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" @@ -12907,7 +13006,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1737 +#: templates/js/translated/stock.js:1773 msgid "Shipped to customer" msgstr "" @@ -12951,7 +13050,7 @@ msgstr "" #: templates/js/translated/search.js:292 templates/search.html:25 msgid "Enter search query" -msgstr "Ingresar consulta de búsqueda" +msgstr "" #: templates/js/translated/search.js:342 msgid "result" @@ -13151,7 +13250,7 @@ msgstr "" #: templates/js/translated/stock.js:1042 users/models.py:401 msgid "Add" -msgstr "Añadir" +msgstr "" #: templates/js/translated/stock.js:1046 msgid "Delete Stock" @@ -13165,7 +13264,7 @@ msgstr "" msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" @@ -13189,248 +13288,256 @@ msgstr "" msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1440 +#: templates/js/translated/stock.js:1447 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1443 +#: templates/js/translated/stock.js:1450 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1466 +#: templates/js/translated/stock.js:1473 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1530 +#: templates/js/translated/stock.js:1537 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1677 +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1733 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1729 +#: templates/js/translated/stock.js:1765 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1769 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1741 +#: templates/js/translated/stock.js:1777 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1747 +#: templates/js/translated/stock.js:1783 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1839 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1848 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:1897 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1916 +#: templates/js/translated/stock.js:1952 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1921 +#: templates/js/translated/stock.js:1957 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1932 +#: templates/js/translated/stock.js:1968 msgid "Stock Actions" msgstr "" -#: templates/js/translated/stock.js:1976 +#: templates/js/translated/stock.js:2012 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2054 +#: templates/js/translated/stock.js:2090 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2059 +#: templates/js/translated/stock.js:2095 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2062 +#: templates/js/translated/stock.js:2098 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2065 +#: templates/js/translated/stock.js:2101 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2067 +#: templates/js/translated/stock.js:2103 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2069 +#: templates/js/translated/stock.js:2105 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2072 +#: templates/js/translated/stock.js:2108 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2074 +#: templates/js/translated/stock.js:2110 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2114 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2080 +#: templates/js/translated/stock.js:2116 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2085 +#: templates/js/translated/stock.js:2121 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2087 +#: templates/js/translated/stock.js:2123 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2089 +#: templates/js/translated/stock.js:2125 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2129 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2258 +#: templates/js/translated/stock.js:2294 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2305 +#: templates/js/translated/stock.js:2341 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2433 +#: templates/js/translated/stock.js:2469 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2573 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2692 +#: templates/js/translated/stock.js:2728 msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2810 +#: templates/js/translated/stock.js:2846 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2814 +#: templates/js/translated/stock.js:2850 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:2862 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2848 +#: templates/js/translated/stock.js:2884 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2865 +#: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2880 +#: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2897 +#: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2914 +#: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3005 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2977 +#: templates/js/translated/stock.js:3013 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:3049 +#: templates/js/translated/stock.js:3085 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139 +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:3161 +#: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:3182 +#: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:3183 +#: 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:3185 +#: 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:3186 +#: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:3187 +#: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:3188 +#: 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:3201 +#: templates/js/translated/stock.js:3237 msgid "Select part to install" msgstr "" -#: templates/js/translated/stock.js:3264 +#: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" msgstr "" -#: templates/js/translated/stock.js:3277 +#: templates/js/translated/stock.js:3313 msgid "Selected stock items" msgstr "" -#: templates/js/translated/stock.js:3281 +#: templates/js/translated/stock.js:3317 msgid "Change Stock Status" msgstr "" @@ -13770,103 +13877,103 @@ msgstr "" #: templates/navbar.html:45 msgid "Buy" -msgstr "Comprar" +msgstr "" #: templates/navbar.html:57 msgid "Sell" -msgstr "Vender" +msgstr "Entrega" #: templates/navbar.html:121 msgid "Show Notifications" -msgstr "Mostrar notificaciones" +msgstr "" #: templates/navbar.html:124 msgid "New Notifications" -msgstr "Notificaciones nuevas" +msgstr "" #: templates/navbar.html:144 users/models.py:188 msgid "Admin" -msgstr "Admin" +msgstr "" #: templates/navbar.html:148 msgid "Logout" -msgstr "Cerrar sesión" +msgstr "" #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" -msgstr "Guardar" +msgstr "" #: templates/notifications.html:9 msgid "Show all notifications and history" -msgstr "Mostrar todas las notificaciones y el historial" +msgstr "" #: templates/qr_code.html:11 msgid "QR data not provided" -msgstr "Datos QR no proporcionados" +msgstr "" #: templates/registration/logged_out.html:7 msgid "You were logged out successfully." -msgstr "Se ha cerrado la sesión correctamente." +msgstr "" #: templates/registration/logged_out.html:9 msgid "Log in again" -msgstr "Volver a ingresar" +msgstr "" #: templates/search.html:9 msgid "Show full search results" -msgstr "Mostrar resultados completos de búsqueda" +msgstr "" #: templates/search.html:12 msgid "Clear search" -msgstr "Borrar búsqueda" +msgstr "" #: templates/search.html:15 msgid "Close search menu" -msgstr "Cerrar menú de búsqueda" +msgstr "" #: templates/socialaccount/authentication_error.html:5 msgid "Social Network Login Failure" -msgstr "Fallo al iniciar sesión en la red social" +msgstr "" #: templates/socialaccount/authentication_error.html:8 msgid "Account Login Failure" -msgstr "Error al iniciar sesión en la cuenta" +msgstr "" #: templates/socialaccount/authentication_error.html:11 msgid "An error occurred while attempting to login via your social network account." -msgstr "Se ha producido un error al intentar iniciar sesión a través de su cuenta de red social." +msgstr "" #: templates/socialaccount/authentication_error.html:13 msgid "Contact your system administrator for further information." -msgstr "Póngase en contacto con su administrador para más información." +msgstr "" #: templates/socialaccount/login.html:13 #, python-format msgid "Connect %(provider)s" -msgstr "Conectar a %(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 "Estás a punto de conectar una nueva cuenta de terceros desde %(provider)s." +msgstr "" #: templates/socialaccount/login.html:17 #, python-format msgid "Sign In Via %(provider)s" -msgstr "Iniciar sesión vía %(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 "Estás a punto de iniciar sesión usando una cuenta de terceros de %(provider)s." +msgstr "" #: templates/socialaccount/login.html:24 msgid "Continue" -msgstr "Continuar" +msgstr "" #: templates/socialaccount/login.html:29 msgid "Invalid SSO Provider" -msgstr "Proveedor SSO inválido" +msgstr "" #: templates/socialaccount/login.html:31 msgid "The selected SSO provider is invalid, or has not been correctly configured" @@ -13891,7 +13998,7 @@ msgstr "" #: templates/stats.html:13 msgid "Instance Name" -msgstr "Nombre de Instancia" +msgstr "Nombre de instancia" #: templates/stats.html:18 msgid "Database" @@ -13899,27 +14006,27 @@ msgstr "Base de datos" #: templates/stats.html:26 msgid "Server is running in debug mode" -msgstr "El servidor se está ejecutando en modo depuración" +msgstr "" #: templates/stats.html:33 msgid "Docker Mode" -msgstr "Modo Docker" +msgstr "" #: templates/stats.html:34 msgid "Server is deployed using docker" -msgstr "El servidor está desplegado usando docker" +msgstr "" #: templates/stats.html:39 msgid "Plugin Support" -msgstr "Soporte para Plugins" +msgstr "Soporte de plugins" #: templates/stats.html:43 msgid "Plugin support enabled" -msgstr "Soporte de plugins habilitado" +msgstr "" #: templates/stats.html:45 msgid "Plugin support disabled" -msgstr "Soporte de plugins desactivado" +msgstr "" #: templates/stats.html:52 msgid "Server status" @@ -13927,43 +14034,43 @@ msgstr "Estado del servidor" #: templates/stats.html:55 msgid "Healthy" -msgstr "Saludable" +msgstr "" #: templates/stats.html:57 msgid "Issues detected" -msgstr "Problemas detectados" +msgstr "" #: templates/stats.html:64 msgid "Background Worker" -msgstr "Trabajador en segundo plano" +msgstr "" #: templates/stats.html:67 msgid "Background worker not running" -msgstr "Trabajador en segundo plano no ejecutado" +msgstr "" #: templates/stats.html:75 msgid "Email Settings" -msgstr "Configuración de Email" +msgstr "Configuración de email" #: templates/stats.html:78 msgid "Email settings not configured" -msgstr "Configuración de correo no configurada" +msgstr "No se ha configurado el servidor de correo electrónico" #: templates/yesnolabel.html:4 msgid "Yes" -msgstr "Sí" +msgstr "" #: templates/yesnolabel.html:6 msgid "No" -msgstr "No" +msgstr "" #: users/admin.py:104 msgid "Users" -msgstr "Usuarios" +msgstr "" #: users/admin.py:105 msgid "Select which users are assigned to this group" -msgstr "Seleccione qué usuarios están asignados a este grupo" +msgstr "" #: users/admin.py:249 msgid "The following users are members of multiple groups" @@ -13971,15 +14078,15 @@ msgstr "" #: users/admin.py:283 msgid "Personal info" -msgstr "Información personal" +msgstr "" #: users/admin.py:285 msgid "Permissions" -msgstr "Permisos" +msgstr "" #: users/admin.py:288 msgid "Important dates" -msgstr "Fechas importantes" +msgstr "" #: users/authentication.py:29 users/models.py:127 msgid "Token has been revoked" @@ -14023,33 +14130,33 @@ msgstr "" #: users/models.py:384 msgid "Permission set" -msgstr "Permiso establecido" +msgstr "" #: users/models.py:393 msgid "Group" -msgstr "Grupo" +msgstr "" #: users/models.py:397 msgid "View" -msgstr "Vista" +msgstr "" #: users/models.py:397 msgid "Permission to view items" -msgstr "Permiso para ver artículos" +msgstr "" #: users/models.py:401 msgid "Permission to add items" -msgstr "Permiso para añadir artículos" +msgstr "" #: users/models.py:405 msgid "Change" -msgstr "Cambiar" +msgstr "" #: users/models.py:407 msgid "Permissions to edit items" -msgstr "Permisos para editar artículos" +msgstr "" #: users/models.py:413 msgid "Permission to delete items" -msgstr "Permiso para eliminar artículos" +msgstr "" diff --git a/InvenTree/locale/es_MX/LC_MESSAGES/django.po b/InvenTree/locale/es_MX/LC_MESSAGES/django.po index a6f744f447..913b7a621d 100644 --- a/InvenTree/locale/es_MX/LC_MESSAGES/django.po +++ b/InvenTree/locale/es_MX/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 06:44+0000\n" +"POT-Creation-Date: 2024-03-15 22:12+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -31,20 +31,20 @@ msgstr "" msgid "Invalid unit provided ({unit})" msgstr "" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" msgstr "" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" msgstr "" @@ -66,10 +66,10 @@ msgstr "" #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/serializers.py:487 stock/serializers.py:645 stock/serializers.py:741 +#: stock/serializers.py:791 stock/serializers.py:1100 stock/serializers.py:1189 +#: stock/serializers.py:1354 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 @@ -133,42 +133,42 @@ msgstr "" msgid "Registration is disabled." msgstr "" -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "" @@ -402,7 +402,7 @@ msgstr "" msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2955 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -433,9 +433,9 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2431 +#: common/models.py:2432 common/models.py:2656 common/models.py:2657 +#: common/models.py:2902 common/models.py:2903 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 @@ -480,10 +480,10 @@ msgstr "" msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2643 common/models.py:3041 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -507,10 +507,10 @@ msgstr "" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -524,7 +524,7 @@ msgstr "" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -582,7 +582,7 @@ msgstr "" msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:62 part/models.py:4134 +#: InvenTree/serializers.py:62 part/models.py:4143 msgid "Must be a valid number" msgstr "" @@ -679,7 +679,7 @@ msgstr "" msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/status.py:66 part/serializers.py:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "" @@ -939,14 +939,14 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -961,7 +961,7 @@ msgid "Tracked" msgstr "" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -1015,7 +1015,7 @@ msgstr "" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1045,11 +1045,11 @@ msgstr "" #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1060,7 +1060,7 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:253 stock/serializers.py:675 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1147,8 +1147,8 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1319 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" @@ -1243,53 +1243,53 @@ msgstr "" msgid "Project code for this build order" msgstr "" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "" -#: build/models.py:789 +#: build/models.py:805 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:458 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" msgstr "" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2453 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1299,7 +1299,7 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:449 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1311,7 +1311,7 @@ msgstr "" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1331,38 +1331,38 @@ msgstr "" msgid "Quantity" msgstr "" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1381 +#: build/models.py:1397 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1390 +#: build/models.py:1406 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1473 +#: build/models.py:1489 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:552 stock/serializers.py:1038 +#: stock/serializers.py:1150 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:1742 @@ -1377,19 +1377,19 @@ msgstr "" msgid "Stock Item" msgstr "" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "" @@ -1426,8 +1426,8 @@ msgstr "" msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:469 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" @@ -1452,10 +1452,10 @@ msgstr "" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:480 stock/serializers.py:640 stock/serializers.py:736 +#: stock/serializers.py:1182 stock/serializers.py:1438 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1494,8 +1494,8 @@ msgstr "" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:787 stock/serializers.py:1326 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 @@ -1567,7 +1567,7 @@ msgstr "" msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "" @@ -1603,11 +1603,11 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1051 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" @@ -1620,7 +1620,7 @@ msgstr "" msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "" @@ -1660,44 +1660,45 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 #: stock/api.py:745 msgid "BOM Item" msgstr "" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1991,27 +1992,31 @@ msgstr "" msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:210 -msgid "Incomplete Build Outputs" -msgstr "" - -#: build/templates/build/detail.html:214 -msgid "Create new build output" +#: 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:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2027,15 +2032,15 @@ msgstr "" msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" msgstr "" @@ -2113,1390 +2118,1406 @@ msgstr "" msgid "User or group responsible for this project" msgstr "" -#: common/models.py:737 +#: common/models.py:744 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:741 +#: common/models.py:748 msgid "Settings value" msgstr "" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "" -#: common/models.py:1231 +#: common/models.py:1238 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1283 +#: common/models.py:1290 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "" -#: common/models.py:1298 +#: common/models.py:1305 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "" -#: common/models.py:1305 +#: common/models.py:1312 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "" -#: common/models.py:1332 +#: common/models.py:1339 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "" -#: common/models.py:1339 +#: common/models.py:1346 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "" -#: common/models.py:1346 +#: common/models.py:1353 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1352 +#: common/models.py:1359 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1360 +#: common/models.py:1367 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1369 +#: common/models.py:1376 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1378 +#: common/models.py:1385 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1386 +#: common/models.py:1393 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1399 +#: common/models.py:1406 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "" -#: common/models.py:1411 +#: common/models.py:1418 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1415 +#: common/models.py:1422 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1421 +#: common/models.py:1428 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1427 +#: common/models.py:1434 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1433 +#: common/models.py:1440 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1439 +#: common/models.py:1446 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:96 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1505 +#: common/models.py:1512 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1512 +#: common/models.py:1519 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "" -#: common/models.py:1525 +#: common/models.py:1532 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1526 +#: common/models.py:1533 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1530 +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1532 +#: common/models.py:1539 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1540 +#: common/models.py:1547 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1548 +#: common/models.py:1555 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1564 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1580 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1588 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1595 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1603 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1611 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1618 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1632 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1645 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: 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:202 msgid "Page Size" msgstr "" -#: common/models.py:1651 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1657 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1664 +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1671 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1677 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1692 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1704 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1711 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1719 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1725 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1731 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1736 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1741 +#: 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 "Build Order Reference Pattern" msgstr "" -#: common/models.py:1743 +#: common/models.py:1764 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1757 +#: common/models.py:1778 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1765 +#: common/models.py:1786 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1773 +#: common/models.py:1794 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1780 +#: common/models.py:1801 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1787 +#: common/models.py:1808 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1795 +#: common/models.py:1816 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1803 +#: common/models.py:1824 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1811 +#: common/models.py:1832 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "" -#: common/models.py:1825 +#: common/models.py:1846 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1838 +#: common/models.py:1859 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1844 +#: common/models.py:1865 msgid "Email required" msgstr "" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1852 +#: common/models.py:1873 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "" -#: common/models.py:1859 +#: common/models.py:1880 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "" -#: common/models.py:1865 +#: common/models.py:1886 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "" -#: common/models.py:1879 +#: common/models.py:1900 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1892 +#: common/models.py:1913 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1929 +#: common/models.py:1950 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "" -#: common/models.py:1936 +#: common/models.py:1957 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1950 +#: common/models.py:1971 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1958 +#: common/models.py:1979 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1966 +#: common/models.py:1987 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1974 +#: common/models.py:1995 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2023 common/models.py:2423 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2043 +#: common/models.py:2064 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2045 +#: common/models.py:2066 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2051 +#: common/models.py:2072 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2052 +#: common/models.py:2073 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2057 +#: common/models.py:2078 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2058 +#: common/models.py:2079 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2063 +#: common/models.py:2084 msgid "Show latest parts" msgstr "" -#: common/models.py:2064 +#: common/models.py:2085 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2069 +#: common/models.py:2090 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2070 +#: common/models.py:2091 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2075 +#: common/models.py:2096 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2076 +#: common/models.py:2097 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2081 +#: common/models.py:2102 msgid "Show low stock" msgstr "" -#: common/models.py:2082 +#: common/models.py:2103 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2087 +#: common/models.py:2108 msgid "Show depleted stock" msgstr "" -#: common/models.py:2088 +#: common/models.py:2109 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2093 +#: common/models.py:2114 msgid "Show needed stock" msgstr "" -#: common/models.py:2094 +#: common/models.py:2115 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2099 +#: common/models.py:2120 msgid "Show expired stock" msgstr "" -#: common/models.py:2100 +#: common/models.py:2121 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2105 +#: common/models.py:2126 msgid "Show stale stock" msgstr "" -#: common/models.py:2106 +#: common/models.py:2127 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2111 +#: common/models.py:2132 msgid "Show pending builds" msgstr "" -#: common/models.py:2112 +#: common/models.py:2133 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2117 +#: common/models.py:2138 msgid "Show overdue builds" msgstr "" -#: common/models.py:2118 +#: common/models.py:2139 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2123 +#: common/models.py:2144 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2124 +#: common/models.py:2145 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2129 +#: common/models.py:2150 msgid "Show overdue POs" msgstr "" -#: common/models.py:2130 +#: common/models.py:2151 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2135 +#: common/models.py:2156 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2136 +#: common/models.py:2157 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2141 +#: common/models.py:2162 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2142 +#: common/models.py:2163 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2147 +#: common/models.py:2168 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2148 +#: common/models.py:2169 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2153 +#: common/models.py:2174 msgid "Show News" msgstr "" -#: common/models.py:2154 +#: common/models.py:2175 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2159 +#: common/models.py:2180 msgid "Inline label display" msgstr "" -#: common/models.py:2161 +#: common/models.py:2182 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2167 +#: common/models.py:2188 msgid "Default label printer" msgstr "" -#: common/models.py:2169 +#: common/models.py:2190 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2175 +#: common/models.py:2196 msgid "Inline report display" msgstr "" -#: common/models.py:2177 +#: common/models.py:2198 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2183 +#: common/models.py:2204 msgid "Search Parts" msgstr "" -#: common/models.py:2184 +#: common/models.py:2205 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2189 +#: common/models.py:2210 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2190 +#: common/models.py:2211 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2195 +#: common/models.py:2216 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2196 +#: common/models.py:2217 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2201 +#: common/models.py:2222 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2202 +#: common/models.py:2223 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2207 +#: common/models.py:2228 msgid "Search Categories" msgstr "" -#: common/models.py:2208 +#: common/models.py:2229 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2213 +#: common/models.py:2234 msgid "Search Stock" msgstr "" -#: common/models.py:2214 +#: common/models.py:2235 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2219 +#: common/models.py:2240 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2221 +#: common/models.py:2242 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2227 +#: common/models.py:2248 msgid "Search Locations" msgstr "" -#: common/models.py:2228 +#: common/models.py:2249 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2233 +#: common/models.py:2254 msgid "Search Companies" msgstr "" -#: common/models.py:2234 +#: common/models.py:2255 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2239 +#: common/models.py:2260 msgid "Search Build Orders" msgstr "" -#: common/models.py:2240 +#: common/models.py:2261 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2245 +#: common/models.py:2266 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2246 +#: common/models.py:2267 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2251 +#: common/models.py:2272 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2253 +#: common/models.py:2274 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2259 +#: common/models.py:2280 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2260 +#: common/models.py:2281 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2265 +#: common/models.py:2286 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2267 +#: common/models.py:2288 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2273 +#: common/models.py:2294 msgid "Search Return Orders" msgstr "" -#: common/models.py:2274 +#: common/models.py:2295 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2279 +#: common/models.py:2300 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2281 +#: common/models.py:2302 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2287 +#: common/models.py:2308 msgid "Search Preview Results" msgstr "" -#: common/models.py:2289 +#: common/models.py:2310 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2295 +#: common/models.py:2316 msgid "Regex Search" msgstr "" -#: common/models.py:2296 +#: common/models.py:2317 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2301 +#: common/models.py:2322 msgid "Whole Word Search" msgstr "" -#: common/models.py:2302 +#: common/models.py:2323 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2307 +#: common/models.py:2328 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2308 +#: common/models.py:2329 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2313 +#: common/models.py:2334 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2314 +#: common/models.py:2335 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2319 +#: common/models.py:2340 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2320 +#: common/models.py:2341 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2325 +#: common/models.py:2346 msgid "Date Format" msgstr "" -#: common/models.py:2326 +#: common/models.py:2347 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2360 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2340 +#: common/models.py:2361 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2366 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2347 +#: common/models.py:2368 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2353 +#: common/models.py:2374 msgid "Table String Length" msgstr "" -#: common/models.py:2355 +#: common/models.py:2376 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2361 +#: common/models.py:2382 msgid "Default part label template" msgstr "" -#: common/models.py:2362 +#: common/models.py:2383 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2367 +#: common/models.py:2388 msgid "Default stock item template" msgstr "" -#: common/models.py:2369 +#: common/models.py:2390 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2375 +#: common/models.py:2396 msgid "Default stock location label template" msgstr "" -#: common/models.py:2377 +#: common/models.py:2398 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2383 +#: common/models.py:2404 msgid "Receive error reports" msgstr "" -#: common/models.py:2384 +#: common/models.py:2405 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2389 +#: common/models.py:2410 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2411 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2454 msgid "Price break quantity" msgstr "" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2461 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3504,23 +3525,23 @@ msgstr "" msgid "Price" msgstr "" -#: common/models.py:2441 +#: common/models.py:2462 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2633 common/models.py:2818 msgid "Endpoint" msgstr "" -#: common/models.py:2613 +#: common/models.py:2634 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2623 +#: common/models.py:2644 msgid "Name for this webhook" msgstr "" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2648 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3530,101 +3551,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2627 +#: common/models.py:2648 msgid "Is this webhook active" msgstr "" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2664 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2644 +#: common/models.py:2665 msgid "Token for access" msgstr "" -#: common/models.py:2652 +#: common/models.py:2673 msgid "Secret" msgstr "" -#: common/models.py:2653 +#: common/models.py:2674 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2761 +#: common/models.py:2782 msgid "Message ID" msgstr "" -#: common/models.py:2762 +#: common/models.py:2783 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2770 +#: common/models.py:2791 msgid "Host" msgstr "" -#: common/models.py:2771 +#: common/models.py:2792 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2779 +#: common/models.py:2800 msgid "Header" msgstr "" -#: common/models.py:2780 +#: common/models.py:2801 msgid "Header of this message" msgstr "" -#: common/models.py:2787 +#: common/models.py:2808 msgid "Body" msgstr "" -#: common/models.py:2788 +#: common/models.py:2809 msgid "Body of this message" msgstr "" -#: common/models.py:2798 +#: common/models.py:2819 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2803 +#: common/models.py:2824 msgid "Worked on" msgstr "" -#: common/models.py:2804 +#: common/models.py:2825 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2930 +#: common/models.py:2951 msgid "Id" msgstr "" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2953 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2957 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2959 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2961 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2943 +#: common/models.py:2964 msgid "Read" msgstr "" -#: common/models.py:2943 +#: common/models.py:2964 msgid "Was this news item read?" msgstr "" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2981 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3634,31 +3655,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2960 +#: common/models.py:2981 msgid "Image file" msgstr "" -#: common/models.py:3002 +#: common/models.py:3023 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3021 +#: common/models.py:3042 msgid "Unit name" msgstr "" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3049 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3029 +#: common/models.py:3050 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3057 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3037 +#: common/models.py:3058 msgid "Unit definition" msgstr "" @@ -3962,7 +3983,7 @@ msgid "Link to address information (external)" msgstr "" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:252 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" @@ -3973,7 +3994,7 @@ msgstr "" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3988,7 +4009,7 @@ msgid "Select manufacturer" msgstr "" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4034,7 +4055,7 @@ msgid "Parameter value" msgstr "" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4060,7 +4081,7 @@ msgstr "" #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4077,7 +4098,7 @@ msgstr "" msgid "Select supplier" msgstr "" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "" @@ -4094,13 +4115,13 @@ msgid "Supplier part description" msgstr "" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:565 msgid "Note" msgstr "" @@ -4113,7 +4134,7 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1336 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2387 @@ -4158,7 +4179,7 @@ msgstr "" msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "" @@ -4219,7 +4240,7 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1086 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4430,8 +4451,9 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "" @@ -4529,7 +4551,7 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4578,10 +4600,12 @@ msgstr "" msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:773 stock/serializers.py:937 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4640,8 +4664,8 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" @@ -4666,7 +4690,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "" @@ -4680,8 +4704,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "" @@ -4839,11 +4863,11 @@ msgstr "" msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -5030,7 +5054,7 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:386 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2274 msgid "Purchase Price" @@ -5085,8 +5109,8 @@ msgstr "" msgid "User who checked this shipment" msgstr "" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "" @@ -5134,7 +5158,7 @@ msgstr "" msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "" @@ -5208,159 +5232,159 @@ msgstr "" msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:610 +#: order/serializers.py:632 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1677 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "" @@ -5734,7 +5758,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" @@ -5764,12 +5788,12 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5786,7 +5810,7 @@ msgid "IPN" msgstr "" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" @@ -5862,10 +5886,10 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -5886,17 +5910,17 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3897 msgid "Part IPN" msgstr "" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5974,8 +5998,8 @@ msgstr "" msgid "This option must be selected" msgstr "" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5983,12 +6007,17 @@ msgstr "" msgid "Category" msgstr "" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5996,7 +6025,7 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -6011,7 +6040,8 @@ msgstr "" msgid "Default location for parts in this category" msgstr "" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810 +#: templates/js/translated/stock.js:2736 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" @@ -6077,7 +6107,7 @@ msgstr "" msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3896 msgid "Part name" msgstr "" @@ -6411,586 +6441,602 @@ msgstr "" msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3448 -msgid "Test with this name already exists for this part" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "" -#: part/models.py:3496 +#: part/models.py:3505 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "" -#: part/models.py:3503 +#: part/models.py:3512 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3847 +#: part/models.py:3856 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3885 +#: part/models.py:3894 msgid "Part ID or part name" msgstr "" -#: part/models.py:3886 +#: part/models.py:3895 msgid "Unique part ID value" msgstr "" -#: part/models.py:3888 +#: part/models.py:3897 msgid "Part IPN value" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "Level" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "BOM level" msgstr "" -#: part/models.py:3979 +#: part/models.py:3988 msgid "Select parent part" msgstr "" -#: part/models.py:3989 +#: part/models.py:3998 msgid "Sub part" msgstr "" -#: part/models.py:3990 +#: part/models.py:3999 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4001 +#: part/models.py:4010 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4007 +#: part/models.py:4016 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4013 +#: part/models.py:4022 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4029 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4021 +#: part/models.py:4030 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4028 +#: part/models.py:4037 msgid "BOM item reference" msgstr "" -#: part/models.py:4036 +#: part/models.py:4045 msgid "BOM item notes" msgstr "" -#: part/models.py:4042 +#: part/models.py:4051 msgid "Checksum" msgstr "" -#: part/models.py:4043 +#: part/models.py:4052 msgid "BOM line checksum" msgstr "" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4057 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4049 +#: part/models.py:4058 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4063 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:4055 +#: part/models.py:4064 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4069 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4061 +#: part/models.py:4070 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4146 stock/models.py:649 +#: part/models.py:4155 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4165 part/models.py:4167 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4298 +#: part/models.py:4307 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4319 +#: part/models.py:4328 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4332 +#: part/models.py:4341 msgid "Parent BOM item" msgstr "" -#: part/models.py:4340 +#: part/models.py:4349 msgid "Substitute part" msgstr "" -#: part/models.py:4356 +#: part/models.py:4365 msgid "Part 1" msgstr "" -#: part/models.py:4364 +#: part/models.py:4373 msgid "Part 2" msgstr "" -#: part/models.py:4365 +#: part/models.py:4374 msgid "Select Related Part" msgstr "" -#: part/models.py:4384 +#: part/models.py:4393 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4389 +#: part/models.py:4398 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:392 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:432 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:480 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1104 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1078 +#: part/serializers.py:1114 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1088 +#: part/serializers.py:1124 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1647 +#: part/serializers.py:1693 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1659 +#: part/serializers.py:1705 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1694 +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "" @@ -7222,7 +7268,7 @@ msgid "Validate BOM" msgstr "" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "" @@ -7406,7 +7452,7 @@ msgstr "" msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "" @@ -8000,7 +8046,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "" @@ -8308,16 +8354,16 @@ msgstr "" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "" @@ -8337,103 +8383,111 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" msgstr "" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" msgstr "" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8740,7 +8794,7 @@ msgstr "" msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:276 msgid "Stock item cannot be created for virtual parts" msgstr "" @@ -8785,7 +8839,7 @@ msgstr "" msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1337 msgid "Packaging this stock item is stored in" msgstr "" @@ -8797,7 +8851,7 @@ msgstr "" msgid "Serial number for this item" msgstr "" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1320 msgid "Batch code for this stock item" msgstr "" @@ -8874,7 +8928,7 @@ msgstr "" msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:515 msgid "Serial numbers already exist" msgstr "" @@ -8906,7 +8960,7 @@ msgstr "" msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1226 msgid "Duplicate stock items" msgstr "" @@ -8954,183 +9008,184 @@ msgstr "" msgid "Test notes" msgstr "" -#: stock/serializers.py:96 +#: stock/serializers.py:97 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:116 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 +#: stock/serializers.py:170 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:267 +#: stock/serializers.py:268 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:380 +#: stock/serializers.py:388 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:442 +#: stock/serializers.py:450 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:455 +#: stock/serializers.py:463 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:462 +#: stock/serializers.py:470 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:481 stock/serializers.py:1183 stock/serializers.py:1439 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:480 +#: stock/serializers.py:488 msgid "Optional note field" msgstr "" -#: stock/serializers.py:490 +#: stock/serializers.py:498 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:545 +#: stock/serializers.py:553 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:560 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:553 +#: stock/serializers.py:561 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:566 stock/serializers.py:646 stock/serializers.py:742 +#: stock/serializers.py:792 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:566 +#: stock/serializers.py:574 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:582 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:581 +#: stock/serializers.py:593 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:606 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:628 +#: stock/serializers.py:641 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:663 +#: stock/serializers.py:676 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:676 +#: stock/serializers.py:689 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:693 +#: stock/serializers.py:706 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:724 +#: stock/serializers.py:737 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:761 +#: stock/serializers.py:774 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:767 +#: stock/serializers.py:780 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:876 stock/serializers.py:939 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1036 +#: stock/serializers.py:1055 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1040 +#: stock/serializers.py:1059 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1044 +#: stock/serializers.py:1063 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1068 +#: stock/serializers.py:1087 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1074 +#: stock/serializers.py:1093 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1082 +#: stock/serializers.py:1101 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1111 stock/serializers.py:1365 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1171 +#: stock/serializers.py:1190 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1176 +#: stock/serializers.py:1195 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1177 +#: stock/serializers.py:1196 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1182 +#: stock/serializers.py:1201 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1183 +#: stock/serializers.py:1202 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1193 +#: stock/serializers.py:1212 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1260 +#: stock/serializers.py:1279 msgid "No Change" msgstr "" -#: stock/serializers.py:1289 +#: stock/serializers.py:1308 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1308 +#: stock/serializers.py:1327 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1336 +#: stock/serializers.py:1355 msgid "Stock transaction notes" msgstr "" @@ -9155,7 +9210,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:283 msgid "Delete Test Data" msgstr "" @@ -9175,11 +9230,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:271 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:301 templates/js/translated/stock.js:1662 msgid "Add Test Result" msgstr "" @@ -10064,7 +10119,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:36 msgid "New Location Type" msgstr "" @@ -10121,7 +10176,7 @@ msgstr "" msgid "Stock Settings" msgstr "" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:32 msgid "Stock Location Types" msgstr "" @@ -10663,7 +10718,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "" @@ -10677,7 +10732,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "" @@ -11052,62 +11107,66 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "" @@ -11450,29 +11509,29 @@ msgstr "" msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1829 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "" @@ -12314,64 +12373,64 @@ msgstr "" msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1446 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1447 #: templates/js/translated/stock.js:1692 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" diff --git a/InvenTree/locale/fa/LC_MESSAGES/django.po b/InvenTree/locale/fa/LC_MESSAGES/django.po index 8e5a5912d4..5cd9d6dc8e 100644 --- a/InvenTree/locale/fa/LC_MESSAGES/django.po +++ b/InvenTree/locale/fa/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 04:05+0000\n" -"PO-Revision-Date: 2024-02-28 07:23\n" +"POT-Creation-Date: 2024-03-19 01:26+0000\n" +"PO-Revision-Date: 2024-03-19 11:52\n" "Last-Translator: \n" "Language-Team: Persian\n" "Language: fa_IR\n" @@ -30,20 +30,20 @@ msgstr "کاربر سطح دسترسی نمایش این مدل را ندارد" msgid "Invalid unit provided ({unit})" msgstr "" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "مقداری افزوده نشده" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" msgstr "تعداد افزوده شده اشتباه است" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" msgstr "" @@ -64,18 +64,18 @@ msgstr "تاریخ را وارد کنید" #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 #: templates/js/translated/return_order.js:776 #: templates/js/translated/sales_order.js:1067 #: templates/js/translated/sales_order.js:1982 -#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 msgid "Notes" msgstr "یادداشت" @@ -132,42 +132,42 @@ msgstr "دامنه ایمیل ارائه شده تایید نشده است." msgid "Registration is disabled." msgstr "" -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "" @@ -203,131 +203,135 @@ msgstr "" msgid "Supplied URL is not a valid image file" msgstr "" -#: InvenTree/locales.py:16 +#: InvenTree/locales.py:18 msgid "Bulgarian" msgstr "" -#: InvenTree/locales.py:17 +#: InvenTree/locales.py:19 msgid "Czech" msgstr "" -#: InvenTree/locales.py:18 +#: InvenTree/locales.py:20 msgid "Danish" msgstr "" -#: InvenTree/locales.py:19 +#: InvenTree/locales.py:21 msgid "German" msgstr "" -#: InvenTree/locales.py:20 +#: InvenTree/locales.py:22 msgid "Greek" msgstr "" -#: InvenTree/locales.py:21 +#: InvenTree/locales.py:23 msgid "English" msgstr "" -#: InvenTree/locales.py:22 +#: InvenTree/locales.py:24 msgid "Spanish" msgstr "" -#: InvenTree/locales.py:23 +#: InvenTree/locales.py:25 msgid "Spanish (Mexican)" msgstr "" -#: InvenTree/locales.py:24 +#: InvenTree/locales.py:26 msgid "Farsi / Persian" msgstr "" -#: InvenTree/locales.py:25 +#: InvenTree/locales.py:27 msgid "Finnish" msgstr "" -#: InvenTree/locales.py:26 +#: InvenTree/locales.py:28 msgid "French" msgstr "" -#: InvenTree/locales.py:27 +#: InvenTree/locales.py:29 msgid "Hebrew" msgstr "" -#: InvenTree/locales.py:28 +#: InvenTree/locales.py:30 msgid "Hindi" msgstr "" -#: InvenTree/locales.py:29 +#: InvenTree/locales.py:31 msgid "Hungarian" msgstr "" -#: InvenTree/locales.py:30 +#: InvenTree/locales.py:32 msgid "Italian" msgstr "" -#: InvenTree/locales.py:31 +#: InvenTree/locales.py:33 msgid "Japanese" msgstr "" -#: InvenTree/locales.py:32 +#: InvenTree/locales.py:34 msgid "Korean" msgstr "" -#: InvenTree/locales.py:33 -msgid "Dutch" -msgstr "" - -#: InvenTree/locales.py:34 -msgid "Norwegian" -msgstr "" - #: InvenTree/locales.py:35 -msgid "Polish" +msgid "Latvian" msgstr "" #: InvenTree/locales.py:36 -msgid "Portuguese" +msgid "Dutch" msgstr "" #: InvenTree/locales.py:37 -msgid "Portuguese (Brazilian)" +msgid "Norwegian" msgstr "" #: InvenTree/locales.py:38 -msgid "Russian" +msgid "Polish" msgstr "" #: InvenTree/locales.py:39 -msgid "Slovak" +msgid "Portuguese" msgstr "" #: InvenTree/locales.py:40 -msgid "Slovenian" +msgid "Portuguese (Brazilian)" msgstr "" #: InvenTree/locales.py:41 -msgid "Serbian" +msgid "Russian" msgstr "" #: InvenTree/locales.py:42 -msgid "Swedish" +msgid "Slovak" msgstr "" #: InvenTree/locales.py:43 -msgid "Thai" +msgid "Slovenian" msgstr "" #: InvenTree/locales.py:44 -msgid "Turkish" +msgid "Serbian" msgstr "" #: InvenTree/locales.py:45 -msgid "Vietnamese" +msgid "Swedish" msgstr "" #: InvenTree/locales.py:46 -msgid "Chinese (Simplified)" +msgid "Thai" msgstr "" #: InvenTree/locales.py:47 +msgid "Turkish" +msgstr "" + +#: InvenTree/locales.py:48 +msgid "Vietnamese" +msgstr "" + +#: InvenTree/locales.py:49 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:50 msgid "Chinese (Traditional)" msgstr "" @@ -391,7 +395,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:559 stock/models.py:2446 +#: InvenTree/models.py:559 stock/models.py:2449 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -401,7 +405,7 @@ msgstr "" msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -432,13 +436,13 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:3000 users/models.py:100 +#: templates/js/translated/stock.js:3036 users/models.py:100 msgid "User" msgstr "" @@ -479,10 +483,10 @@ msgstr "" msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -495,7 +499,7 @@ msgstr "" #: templates/js/translated/company.js:1155 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "" @@ -506,10 +510,10 @@ msgstr "" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -523,7 +527,7 @@ msgstr "" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -531,8 +535,8 @@ msgstr "" #: templates/js/translated/return_order.js:314 #: templates/js/translated/sales_order.js:802 #: templates/js/translated/sales_order.js:1812 -#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021 -#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "" @@ -545,7 +549,7 @@ msgid "parent" msgstr "" #: InvenTree/models.py:916 templates/js/translated/part.js:2794 -#: templates/js/translated/stock.js:2721 +#: templates/js/translated/stock.js:2757 msgid "Path" msgstr "" @@ -581,7 +585,7 @@ msgstr "" msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:62 part/models.py:4134 +#: InvenTree/serializers.py:62 part/models.py:4143 msgid "Must be a valid number" msgstr "" @@ -596,89 +600,89 @@ msgstr "" msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:436 +#: InvenTree/serializers.py:441 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:448 +#: InvenTree/serializers.py:453 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:467 +#: InvenTree/serializers.py:472 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:469 +#: InvenTree/serializers.py:474 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:476 +#: InvenTree/serializers.py:481 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:537 +#: InvenTree/serializers.py:542 msgid "Filename" msgstr "" -#: InvenTree/serializers.py:571 +#: InvenTree/serializers.py:576 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:591 +#: InvenTree/serializers.py:596 msgid "Data File" msgstr "فایل‌های داده" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:597 msgid "Select data file for upload" msgstr "فایل را برای بارگذاری انتخاب کنید" -#: InvenTree/serializers.py:609 +#: InvenTree/serializers.py:614 msgid "Unsupported file type" msgstr "این نوع فایل پشتیبانی نمی‌شود" -#: InvenTree/serializers.py:615 +#: InvenTree/serializers.py:620 msgid "File is too large" msgstr "حجم فایل خیلی بزرگ است" -#: InvenTree/serializers.py:636 +#: InvenTree/serializers.py:641 msgid "No columns found in file" msgstr "هیچ ستونی در فایل یافت نشد" -#: InvenTree/serializers.py:639 +#: InvenTree/serializers.py:644 msgid "No data rows found in file" msgstr "هیچ ردیف داده ای در فایل یافت نشد" -#: InvenTree/serializers.py:752 +#: InvenTree/serializers.py:757 msgid "No data rows provided" msgstr "هیچ ردیف داده ای ارائه نشده است" -#: InvenTree/serializers.py:755 +#: InvenTree/serializers.py:760 msgid "No data columns supplied" msgstr "هیچ ستون داده ای ارائه نشده است" -#: InvenTree/serializers.py:822 +#: InvenTree/serializers.py:827 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "ستون مورد نیاز وجود ندارد: \"{name}\"" -#: InvenTree/serializers.py:831 +#: InvenTree/serializers.py:836 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "ستون تکراری: '{col}'" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:859 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:855 +#: InvenTree/serializers.py:860 msgid "URL of remote image file" msgstr "آدرس فایل تصویری از راه دور" -#: InvenTree/serializers.py:873 +#: InvenTree/serializers.py:878 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/status.py:66 part/serializers.py:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "" @@ -818,7 +822,7 @@ msgstr "" msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 msgid "Merged stock items" msgstr "" @@ -838,7 +842,7 @@ msgstr "" msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 msgid "Consumed by build order" msgstr "" @@ -938,14 +942,14 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -960,7 +964,7 @@ msgid "Tracked" msgstr "" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -985,7 +989,7 @@ msgstr "" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "" @@ -1014,7 +1018,7 @@ msgstr "" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1044,11 +1048,11 @@ msgstr "" #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1059,7 +1063,7 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:267 stock/serializers.py:689 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1086,9 +1090,9 @@ msgstr "" #: templates/js/translated/sales_order.js:1598 #: templates/js/translated/sales_order.js:1796 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960 -#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054 -#: templates/js/translated/stock.js:3200 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 msgid "Part" msgstr "" @@ -1146,8 +1150,8 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" @@ -1242,53 +1246,53 @@ msgstr "" msgid "Project code for this build order" msgstr "" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "" -#: build/models.py:789 +#: build/models.py:805 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" msgstr "" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1298,7 +1302,7 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:463 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1310,7 +1314,7 @@ msgstr "" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1325,43 +1329,43 @@ msgstr "" #: templates/js/translated/sales_order.js:1698 #: templates/js/translated/sales_order.js:1824 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 -#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985 -#: templates/js/translated/stock.js:3068 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1381 +#: build/models.py:1397 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1390 +#: build/models.py:1406 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1473 +#: build/models.py:1489 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 @@ -1372,23 +1376,23 @@ msgstr "" #: templates/js/translated/sales_order.js:1605 #: templates/js/translated/sales_order.js:1692 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 -#: templates/js/translated/stock.js:2941 +#: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "" @@ -1425,8 +1429,8 @@ msgstr "" msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" @@ -1451,10 +1455,10 @@ msgstr "" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1466,8 +1470,8 @@ msgstr "" #: templates/js/translated/sales_order.js:1627 #: templates/js/translated/sales_order.js:1706 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164 -#: templates/js/translated/stock.js:2835 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 msgid "Location" msgstr "" @@ -1493,16 +1497,16 @@ msgstr "" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 #: templates/js/translated/purchase_order.js:1723 #: templates/js/translated/return_order.js:331 #: templates/js/translated/sales_order.js:819 -#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959 -#: templates/js/translated/stock.js:3084 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 msgid "Status" msgstr "" @@ -1566,7 +1570,7 @@ msgstr "" msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "" @@ -1602,11 +1606,11 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1065 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" @@ -1619,7 +1623,7 @@ msgstr "" msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "" @@ -1659,44 +1663,45 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 #: stock/api.py:745 msgid "BOM Item" msgstr "" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1862,7 +1867,7 @@ msgstr "" #: templates/js/translated/pricing.js:929 #: templates/js/translated/sales_order.js:769 #: templates/js/translated/sales_order.js:992 -#: templates/js/translated/stock.js:2888 +#: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "" @@ -1920,8 +1925,8 @@ msgstr "" #: templates/js/translated/build.js:1377 #: templates/js/translated/model_renderers.js:235 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153 -#: templates/js/translated/stock.js:3091 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" @@ -1990,27 +1995,31 @@ msgstr "" msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:210 -msgid "Incomplete Build Outputs" -msgstr "" - -#: build/templates/build/detail.html:214 -msgid "Create new build output" +#: 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:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2026,15 +2035,15 @@ msgstr "" msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" msgstr "" @@ -2112,1390 +2121,1414 @@ msgstr "" msgid "User or group responsible for this project" msgstr "" -#: common/models.py:737 +#: common/models.py:744 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:741 +#: common/models.py:748 msgid "Settings value" msgstr "" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "" -#: common/models.py:1231 +#: common/models.py:1238 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1283 +#: common/models.py:1290 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "" -#: common/models.py:1298 +#: common/models.py:1305 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "" -#: common/models.py:1305 +#: common/models.py:1312 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "" -#: common/models.py:1332 +#: common/models.py:1339 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "" -#: common/models.py:1339 +#: common/models.py:1346 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "" -#: common/models.py:1346 +#: common/models.py:1353 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1352 +#: common/models.py:1359 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1360 +#: common/models.py:1367 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1369 +#: common/models.py:1376 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1378 +#: common/models.py:1385 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1386 +#: common/models.py:1393 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1399 +#: common/models.py:1406 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "" -#: common/models.py:1411 +#: common/models.py:1418 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1415 +#: common/models.py:1422 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1421 +#: common/models.py:1428 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1427 +#: common/models.py:1434 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1433 +#: common/models.py:1440 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1439 +#: common/models.py:1446 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1505 +#: common/models.py:1512 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1512 +#: common/models.py:1519 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "" -#: common/models.py:1525 +#: common/models.py:1532 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1526 +#: common/models.py:1533 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1530 +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1532 +#: common/models.py:1539 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1540 +#: common/models.py:1547 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1548 +#: common/models.py:1555 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1564 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1580 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1588 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1595 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1603 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1611 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1618 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1632 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1645 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: 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:202 msgid "Page Size" msgstr "" -#: common/models.py:1651 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1657 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1664 +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1671 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1677 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1692 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1704 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1711 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1719 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1725 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1731 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1736 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1741 +#: 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 "Build Order Reference Pattern" msgstr "" -#: common/models.py:1743 +#: common/models.py:1764 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1757 +#: common/models.py:1778 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1765 +#: common/models.py:1786 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1773 +#: common/models.py:1794 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1780 +#: common/models.py:1801 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1787 +#: common/models.py:1808 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1795 +#: common/models.py:1816 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1803 +#: common/models.py:1824 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1811 +#: common/models.py:1832 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "" -#: common/models.py:1825 +#: common/models.py:1846 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1838 +#: common/models.py:1859 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1844 +#: common/models.py:1865 msgid "Email required" msgstr "" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1852 +#: common/models.py:1873 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "" -#: common/models.py:1859 +#: common/models.py:1880 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "" -#: common/models.py:1865 +#: common/models.py:1886 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "" -#: common/models.py:1879 +#: common/models.py:1900 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1892 +#: common/models.py:1913 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1929 +#: common/models.py:1950 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "" -#: common/models.py:1936 +#: common/models.py:1957 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1950 +#: common/models.py:1971 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1958 +#: common/models.py:1979 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1966 +#: common/models.py:1987 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1974 +#: common/models.py:1995 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2029 common/models.py:2429 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2043 +#: common/models.py:2070 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2045 +#: common/models.py:2072 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2051 +#: common/models.py:2078 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2052 +#: common/models.py:2079 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2057 +#: common/models.py:2084 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2058 +#: common/models.py:2085 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2063 +#: common/models.py:2090 msgid "Show latest parts" msgstr "" -#: common/models.py:2064 +#: common/models.py:2091 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2069 +#: common/models.py:2096 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2070 +#: common/models.py:2097 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2075 +#: common/models.py:2102 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2076 +#: common/models.py:2103 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2081 +#: common/models.py:2108 msgid "Show low stock" msgstr "" -#: common/models.py:2082 +#: common/models.py:2109 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2087 +#: common/models.py:2114 msgid "Show depleted stock" msgstr "" -#: common/models.py:2088 +#: common/models.py:2115 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2093 +#: common/models.py:2120 msgid "Show needed stock" msgstr "" -#: common/models.py:2094 +#: common/models.py:2121 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2099 +#: common/models.py:2126 msgid "Show expired stock" msgstr "" -#: common/models.py:2100 +#: common/models.py:2127 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2105 +#: common/models.py:2132 msgid "Show stale stock" msgstr "" -#: common/models.py:2106 +#: common/models.py:2133 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2111 +#: common/models.py:2138 msgid "Show pending builds" msgstr "" -#: common/models.py:2112 +#: common/models.py:2139 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2117 +#: common/models.py:2144 msgid "Show overdue builds" msgstr "" -#: common/models.py:2118 +#: common/models.py:2145 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2123 +#: common/models.py:2150 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2124 +#: common/models.py:2151 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2129 +#: common/models.py:2156 msgid "Show overdue POs" msgstr "" -#: common/models.py:2130 +#: common/models.py:2157 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2135 +#: common/models.py:2162 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2136 +#: common/models.py:2163 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2141 +#: common/models.py:2168 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2142 +#: common/models.py:2169 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2147 +#: common/models.py:2174 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2148 +#: common/models.py:2175 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2153 +#: common/models.py:2180 msgid "Show News" msgstr "" -#: common/models.py:2154 +#: common/models.py:2181 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2159 +#: common/models.py:2186 msgid "Inline label display" msgstr "" -#: common/models.py:2161 +#: common/models.py:2188 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2167 +#: common/models.py:2194 msgid "Default label printer" msgstr "" -#: common/models.py:2169 +#: common/models.py:2196 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2175 +#: common/models.py:2202 msgid "Inline report display" msgstr "" -#: common/models.py:2177 +#: common/models.py:2204 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2183 +#: common/models.py:2210 msgid "Search Parts" msgstr "" -#: common/models.py:2184 +#: common/models.py:2211 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2189 +#: common/models.py:2216 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2190 +#: common/models.py:2217 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2195 +#: common/models.py:2222 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2196 +#: common/models.py:2223 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2201 +#: common/models.py:2228 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2202 +#: common/models.py:2229 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2207 +#: common/models.py:2234 msgid "Search Categories" msgstr "" -#: common/models.py:2208 +#: common/models.py:2235 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2213 +#: common/models.py:2240 msgid "Search Stock" msgstr "" -#: common/models.py:2214 +#: common/models.py:2241 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2219 +#: common/models.py:2246 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2221 +#: common/models.py:2248 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2227 +#: common/models.py:2254 msgid "Search Locations" msgstr "" -#: common/models.py:2228 +#: common/models.py:2255 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2233 +#: common/models.py:2260 msgid "Search Companies" msgstr "" -#: common/models.py:2234 +#: common/models.py:2261 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2239 +#: common/models.py:2266 msgid "Search Build Orders" msgstr "" -#: common/models.py:2240 +#: common/models.py:2267 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2245 +#: common/models.py:2272 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2246 +#: common/models.py:2273 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2251 +#: common/models.py:2278 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2253 +#: common/models.py:2280 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2259 +#: common/models.py:2286 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2260 +#: common/models.py:2287 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2265 +#: common/models.py:2292 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2267 +#: common/models.py:2294 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2273 +#: common/models.py:2300 msgid "Search Return Orders" msgstr "" -#: common/models.py:2274 +#: common/models.py:2301 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2279 +#: common/models.py:2306 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2281 +#: common/models.py:2308 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2287 +#: common/models.py:2314 msgid "Search Preview Results" msgstr "" -#: common/models.py:2289 +#: common/models.py:2316 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2295 +#: common/models.py:2322 msgid "Regex Search" msgstr "" -#: common/models.py:2296 +#: common/models.py:2323 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2301 +#: common/models.py:2328 msgid "Whole Word Search" msgstr "" -#: common/models.py:2302 +#: common/models.py:2329 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2307 +#: common/models.py:2334 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2308 +#: common/models.py:2335 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2313 +#: common/models.py:2340 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2314 +#: common/models.py:2341 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2319 +#: common/models.py:2346 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2320 +#: common/models.py:2347 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2325 +#: common/models.py:2352 msgid "Date Format" msgstr "" -#: common/models.py:2326 +#: common/models.py:2353 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2366 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2340 +#: common/models.py:2367 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2372 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2347 +#: common/models.py:2374 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2353 +#: common/models.py:2380 msgid "Table String Length" msgstr "" -#: common/models.py:2355 +#: common/models.py:2382 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2361 +#: common/models.py:2388 msgid "Default part label template" msgstr "" -#: common/models.py:2362 +#: common/models.py:2389 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2367 +#: common/models.py:2394 msgid "Default stock item template" msgstr "" -#: common/models.py:2369 +#: common/models.py:2396 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2375 +#: common/models.py:2402 msgid "Default stock location label template" msgstr "" -#: common/models.py:2377 +#: common/models.py:2404 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2383 +#: common/models.py:2410 msgid "Receive error reports" msgstr "" -#: common/models.py:2384 +#: common/models.py:2411 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2389 +#: common/models.py:2416 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2417 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2460 msgid "Price break quantity" msgstr "" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3503,23 +3536,23 @@ msgstr "" msgid "Price" msgstr "" -#: common/models.py:2441 +#: common/models.py:2468 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2639 common/models.py:2824 msgid "Endpoint" msgstr "" -#: common/models.py:2613 +#: common/models.py:2640 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2623 +#: common/models.py:2650 msgid "Name for this webhook" msgstr "" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3529,101 +3562,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2627 +#: common/models.py:2654 msgid "Is this webhook active" msgstr "" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2670 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2644 +#: common/models.py:2671 msgid "Token for access" msgstr "" -#: common/models.py:2652 +#: common/models.py:2679 msgid "Secret" msgstr "" -#: common/models.py:2653 +#: common/models.py:2680 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2761 +#: common/models.py:2788 msgid "Message ID" msgstr "" -#: common/models.py:2762 +#: common/models.py:2789 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2770 +#: common/models.py:2797 msgid "Host" msgstr "" -#: common/models.py:2771 +#: common/models.py:2798 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2779 +#: common/models.py:2806 msgid "Header" msgstr "" -#: common/models.py:2780 +#: common/models.py:2807 msgid "Header of this message" msgstr "" -#: common/models.py:2787 +#: common/models.py:2814 msgid "Body" msgstr "" -#: common/models.py:2788 +#: common/models.py:2815 msgid "Body of this message" msgstr "" -#: common/models.py:2798 +#: common/models.py:2825 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2803 +#: common/models.py:2830 msgid "Worked on" msgstr "" -#: common/models.py:2804 +#: common/models.py:2831 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2930 +#: common/models.py:2957 msgid "Id" msgstr "" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2959 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2963 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2965 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2967 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Read" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Was this news item read?" msgstr "" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2987 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3633,31 +3666,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2960 +#: common/models.py:2987 msgid "Image file" msgstr "" -#: common/models.py:3002 +#: common/models.py:3029 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3021 +#: common/models.py:3048 msgid "Unit name" msgstr "" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3029 +#: common/models.py:3056 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3037 +#: common/models.py:3064 msgid "Unit definition" msgstr "" @@ -3961,7 +3994,7 @@ msgid "Link to address information (external)" msgstr "" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" @@ -3972,7 +4005,7 @@ msgstr "" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3987,7 +4020,7 @@ msgid "Select manufacturer" msgstr "" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4022,9 +4055,9 @@ msgstr "" #: company/models.py:615 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2438 templates/js/translated/company.js:1156 +#: stock/models.py:2441 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1519 msgid "Value" msgstr "" @@ -4033,7 +4066,7 @@ msgid "Parameter value" msgstr "" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4059,7 +4092,7 @@ msgstr "" #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4076,7 +4109,7 @@ msgstr "" msgid "Select supplier" msgstr "" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "" @@ -4093,13 +4126,13 @@ msgid "Supplier part description" msgstr "" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:579 msgid "Note" msgstr "" @@ -4112,10 +4145,10 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 -#: templates/js/translated/stock.js:2387 +#: templates/js/translated/stock.js:2423 msgid "Packaging" msgstr "" @@ -4157,7 +4190,7 @@ msgstr "" msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "" @@ -4218,13 +4251,13 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1100 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 #: templates/js/translated/return_order.js:296 #: templates/js/translated/sales_order.js:784 -#: templates/js/translated/stock.js:2923 +#: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:804 msgid "Customer" msgstr "" @@ -4429,8 +4462,9 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "" @@ -4482,7 +4516,7 @@ msgstr "" #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2243 +#: templates/js/translated/stock.js:2279 msgid "Supplier Part" msgstr "" @@ -4528,7 +4562,7 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4577,15 +4611,17 @@ msgstr "" msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 -#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:193 msgid "Stock Items" msgstr "" @@ -4639,8 +4675,8 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" @@ -4665,7 +4701,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "" @@ -4679,8 +4715,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "" @@ -4821,7 +4857,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1674 -#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "" @@ -4830,7 +4866,7 @@ msgstr "" #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 -#: templates/js/translated/stock.js:2905 +#: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "" @@ -4838,11 +4874,11 @@ msgstr "" msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -5029,9 +5065,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2274 +#: templates/js/translated/stock.js:2310 msgid "Purchase Price" msgstr "" @@ -5084,8 +5120,8 @@ msgstr "" msgid "User who checked this shipment" msgstr "" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "" @@ -5133,7 +5169,7 @@ msgstr "" msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "" @@ -5207,159 +5243,159 @@ msgstr "" msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:610 +#: order/serializers.py:632 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1677 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "" @@ -5733,7 +5769,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" @@ -5763,12 +5799,12 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5780,12 +5816,12 @@ msgstr "" #: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 -#: templates/js/translated/stock.js:1999 +#: templates/js/translated/stock.js:2035 msgid "IPN" msgstr "" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" @@ -5861,10 +5897,10 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -5885,17 +5921,17 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3897 msgid "Part IPN" msgstr "" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5973,8 +6009,8 @@ msgstr "" msgid "This option must be selected" msgstr "" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5982,12 +6018,17 @@ msgstr "" msgid "Category" msgstr "" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5995,7 +6036,7 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -6010,7 +6051,8 @@ msgstr "" msgid "Default location for parts in this category" msgstr "" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 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" @@ -6076,7 +6118,7 @@ msgstr "" msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3896 msgid "Part name" msgstr "" @@ -6358,7 +6400,7 @@ msgstr "" #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1732 -#: templates/js/translated/stock.js:2785 +#: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" @@ -6410,586 +6452,602 @@ msgstr "" msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3448 -msgid "Test with this name already exists for this part" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "" -#: part/models.py:3496 +#: part/models.py:3505 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "" -#: part/models.py:3503 +#: part/models.py:3512 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3847 +#: part/models.py:3856 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3885 +#: part/models.py:3894 msgid "Part ID or part name" msgstr "" -#: part/models.py:3886 +#: part/models.py:3895 msgid "Unique part ID value" msgstr "" -#: part/models.py:3888 +#: part/models.py:3897 msgid "Part IPN value" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "Level" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "BOM level" msgstr "" -#: part/models.py:3979 +#: part/models.py:3988 msgid "Select parent part" msgstr "" -#: part/models.py:3989 +#: part/models.py:3998 msgid "Sub part" msgstr "" -#: part/models.py:3990 +#: part/models.py:3999 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4001 +#: part/models.py:4010 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4007 +#: part/models.py:4016 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4013 +#: part/models.py:4022 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4029 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4021 +#: part/models.py:4030 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4028 +#: part/models.py:4037 msgid "BOM item reference" msgstr "" -#: part/models.py:4036 +#: part/models.py:4045 msgid "BOM item notes" msgstr "" -#: part/models.py:4042 +#: part/models.py:4051 msgid "Checksum" msgstr "" -#: part/models.py:4043 +#: part/models.py:4052 msgid "BOM line checksum" msgstr "" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4057 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4049 +#: part/models.py:4058 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4063 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:4055 +#: part/models.py:4064 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4069 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4061 +#: part/models.py:4070 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4146 stock/models.py:649 +#: part/models.py:4155 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4165 part/models.py:4167 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4298 +#: part/models.py:4307 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4319 +#: part/models.py:4328 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4332 +#: part/models.py:4341 msgid "Parent BOM item" msgstr "" -#: part/models.py:4340 +#: part/models.py:4349 msgid "Substitute part" msgstr "" -#: part/models.py:4356 +#: part/models.py:4365 msgid "Part 1" msgstr "" -#: part/models.py:4364 +#: part/models.py:4373 msgid "Part 2" msgstr "" -#: part/models.py:4365 +#: part/models.py:4374 msgid "Select Related Part" msgstr "" -#: part/models.py:4384 +#: part/models.py:4393 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4389 +#: part/models.py:4398 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:432 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:480 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1104 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1078 +#: part/serializers.py:1114 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1088 +#: part/serializers.py:1124 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1647 +#: part/serializers.py:1693 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1659 +#: part/serializers.py:1705 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1694 +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "" @@ -7147,7 +7205,7 @@ msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/stock.js:2179 users/models.py:191 +#: templates/js/translated/stock.js:2215 users/models.py:191 msgid "Stocktake" msgstr "" @@ -7221,7 +7279,7 @@ msgid "Validate BOM" msgstr "" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "" @@ -7405,7 +7463,7 @@ msgstr "" msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "" @@ -7509,7 +7567,7 @@ msgstr "" #: templates/InvenTree/settings/sidebar.html:51 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 -#: templates/js/translated/stock.js:2033 templates/navbar.html:31 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7555,7 +7613,7 @@ msgstr "" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 -#: templates/js/translated/stock.js:2209 +#: templates/js/translated/stock.js:2245 msgid "Last Updated" msgstr "" @@ -7999,7 +8057,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "" @@ -8307,16 +8365,16 @@ msgstr "" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "" @@ -8336,103 +8394,111 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" msgstr "" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" msgstr "" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8499,12 +8565,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1492 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Result" msgstr "" @@ -8531,7 +8597,7 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:168 #: stock/admin.py:162 templates/js/translated/stock.js:700 -#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110 msgid "Serial" msgstr "" @@ -8615,7 +8681,7 @@ msgstr "" #: stock/admin.py:256 stock/models.py:886 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2193 users/models.py:113 +#: templates/js/translated/stock.js:2229 users/models.py:113 msgid "Expiry Date" msgstr "" @@ -8713,7 +8779,7 @@ msgstr "" msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:174 templates/js/translated/stock.js:2745 +#: stock/models.py:174 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" @@ -8722,7 +8788,7 @@ msgstr "" msgid "This is an external stock location" msgstr "" -#: stock/models.py:181 templates/js/translated/stock.js:2754 +#: stock/models.py:181 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" @@ -8739,7 +8805,7 @@ msgstr "" msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:290 msgid "Stock item cannot be created for virtual parts" msgstr "" @@ -8784,7 +8850,7 @@ msgstr "" msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1351 msgid "Packaging this stock item is stored in" msgstr "" @@ -8796,7 +8862,7 @@ msgstr "" msgid "Serial number for this item" msgstr "" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1334 msgid "Batch code for this stock item" msgstr "" @@ -8873,7 +8939,7 @@ msgstr "" msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:529 msgid "Serial numbers already exist" msgstr "" @@ -8905,7 +8971,7 @@ msgstr "" msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1240 msgid "Duplicate stock items" msgstr "" @@ -8929,207 +8995,236 @@ msgstr "" msgid "Entry notes" msgstr "" -#: stock/models.py:2399 +#: stock/models.py:2402 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2405 +#: stock/models.py:2408 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Test result" msgstr "" -#: stock/models.py:2439 +#: stock/models.py:2442 msgid "Test output value" msgstr "" -#: stock/models.py:2447 +#: stock/models.py:2450 msgid "Test result attachment" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2454 msgid "Test notes" msgstr "" -#: stock/serializers.py:96 +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "" + +#: stock/models.py:2463 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2469 +msgid "Started" +msgstr "" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:100 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:119 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 +#: stock/serializers.py:151 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:184 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:267 +#: stock/serializers.py:282 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:380 +#: stock/serializers.py:402 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:442 +#: stock/serializers.py:464 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:455 +#: stock/serializers.py:477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:462 +#: stock/serializers.py:484 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:480 +#: stock/serializers.py:502 msgid "Optional note field" msgstr "" -#: stock/serializers.py:490 +#: stock/serializers.py:512 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:545 +#: stock/serializers.py:567 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:574 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:553 +#: stock/serializers.py:575 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:566 +#: stock/serializers.py:588 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:596 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:581 +#: stock/serializers.py:607 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:620 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:628 +#: stock/serializers.py:655 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:663 +#: stock/serializers.py:690 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:676 +#: stock/serializers.py:703 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:693 +#: stock/serializers.py:720 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:724 +#: stock/serializers.py:751 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:761 +#: stock/serializers.py:788 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:767 +#: stock/serializers.py:794 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1036 +#: stock/serializers.py:1069 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1040 +#: stock/serializers.py:1073 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1044 +#: stock/serializers.py:1077 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1068 +#: stock/serializers.py:1101 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1074 +#: stock/serializers.py:1107 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1082 +#: stock/serializers.py:1115 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1125 stock/serializers.py:1379 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1171 +#: stock/serializers.py:1204 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1176 +#: stock/serializers.py:1209 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1177 +#: stock/serializers.py:1210 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1182 +#: stock/serializers.py:1215 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1183 +#: stock/serializers.py:1216 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1193 +#: stock/serializers.py:1226 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1260 +#: stock/serializers.py:1293 msgid "No Change" msgstr "" -#: stock/serializers.py:1289 +#: stock/serializers.py:1322 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1308 +#: stock/serializers.py:1341 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1336 +#: stock/serializers.py:1369 msgid "Stock transaction notes" msgstr "" @@ -9154,7 +9249,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 msgid "Delete Test Data" msgstr "" @@ -9170,15 +9265,15 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:274 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 msgid "Add Test Result" msgstr "" @@ -9201,17 +9296,17 @@ msgid "Stock adjustment actions" msgstr "" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 msgid "Count stock" msgstr "" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:1803 msgid "Add stock" msgstr "" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1776 +#: templates/js/translated/stock.js:1812 msgid "Remove stock" msgstr "" @@ -9220,12 +9315,12 @@ msgid "Serialize stock" msgstr "" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 msgid "Transfer stock" msgstr "" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1884 msgid "Assign to customer" msgstr "" @@ -9364,7 +9459,7 @@ msgid "No stocktake performed" msgstr "" #: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1915 +#: templates/js/translated/stock.js:1951 msgid "stock item" msgstr "" @@ -9469,7 +9564,7 @@ msgid "New Location" msgstr "" #: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2536 +#: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" @@ -10063,7 +10158,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:37 msgid "New Location Type" msgstr "" @@ -10120,7 +10215,7 @@ msgstr "" msgid "Stock Settings" msgstr "" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:33 msgid "Stock Location Types" msgstr "" @@ -10662,7 +10757,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "" @@ -10676,7 +10771,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "" @@ -11051,62 +11146,66 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "" @@ -11389,7 +11488,7 @@ msgstr "" #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 -#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11401,7 +11500,7 @@ msgstr "" msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006 +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" @@ -11449,29 +11548,29 @@ msgstr "" msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "" @@ -11804,15 +11903,15 @@ msgstr "" msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3087 +#: templates/js/translated/forms.js:3103 msgid "Select Columns" msgstr "" @@ -12289,7 +12388,7 @@ msgid "No category" msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 -#: templates/js/translated/stock.js:2633 +#: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" @@ -12301,7 +12400,7 @@ msgstr "" msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" @@ -12313,64 +12412,64 @@ msgstr "" msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" @@ -12907,7 +13006,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1737 +#: templates/js/translated/stock.js:1773 msgid "Shipped to customer" msgstr "" @@ -13165,7 +13264,7 @@ msgstr "" msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" @@ -13189,248 +13288,256 @@ msgstr "" msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1440 +#: templates/js/translated/stock.js:1447 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1443 +#: templates/js/translated/stock.js:1450 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1466 +#: templates/js/translated/stock.js:1473 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1530 +#: templates/js/translated/stock.js:1537 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1677 +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1733 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1729 +#: templates/js/translated/stock.js:1765 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1769 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1741 +#: templates/js/translated/stock.js:1777 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1747 +#: templates/js/translated/stock.js:1783 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1839 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1848 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:1897 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1916 +#: templates/js/translated/stock.js:1952 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1921 +#: templates/js/translated/stock.js:1957 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1932 +#: templates/js/translated/stock.js:1968 msgid "Stock Actions" msgstr "" -#: templates/js/translated/stock.js:1976 +#: templates/js/translated/stock.js:2012 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2054 +#: templates/js/translated/stock.js:2090 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2059 +#: templates/js/translated/stock.js:2095 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2062 +#: templates/js/translated/stock.js:2098 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2065 +#: templates/js/translated/stock.js:2101 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2067 +#: templates/js/translated/stock.js:2103 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2069 +#: templates/js/translated/stock.js:2105 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2072 +#: templates/js/translated/stock.js:2108 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2074 +#: templates/js/translated/stock.js:2110 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2114 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2080 +#: templates/js/translated/stock.js:2116 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2085 +#: templates/js/translated/stock.js:2121 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2087 +#: templates/js/translated/stock.js:2123 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2089 +#: templates/js/translated/stock.js:2125 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2129 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2258 +#: templates/js/translated/stock.js:2294 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2305 +#: templates/js/translated/stock.js:2341 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2433 +#: templates/js/translated/stock.js:2469 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2573 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2692 +#: templates/js/translated/stock.js:2728 msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2810 +#: templates/js/translated/stock.js:2846 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2814 +#: templates/js/translated/stock.js:2850 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:2862 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2848 +#: templates/js/translated/stock.js:2884 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2865 +#: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2880 +#: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2897 +#: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2914 +#: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3005 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2977 +#: templates/js/translated/stock.js:3013 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:3049 +#: templates/js/translated/stock.js:3085 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139 +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:3161 +#: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:3182 +#: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:3183 +#: 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:3185 +#: 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:3186 +#: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:3187 +#: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:3188 +#: 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:3201 +#: templates/js/translated/stock.js:3237 msgid "Select part to install" msgstr "" -#: templates/js/translated/stock.js:3264 +#: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" msgstr "" -#: templates/js/translated/stock.js:3277 +#: templates/js/translated/stock.js:3313 msgid "Selected stock items" msgstr "" -#: templates/js/translated/stock.js:3281 +#: templates/js/translated/stock.js:3317 msgid "Change Stock Status" msgstr "" diff --git a/InvenTree/locale/fi/LC_MESSAGES/django.po b/InvenTree/locale/fi/LC_MESSAGES/django.po index 99902bc110..3e6069f403 100644 --- a/InvenTree/locale/fi/LC_MESSAGES/django.po +++ b/InvenTree/locale/fi/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 04:05+0000\n" -"PO-Revision-Date: 2024-02-28 07:23\n" +"POT-Creation-Date: 2024-03-19 01:26+0000\n" +"PO-Revision-Date: 2024-03-19 11:51\n" "Last-Translator: \n" "Language-Team: Finnish\n" "Language: fi_FI\n" @@ -30,20 +30,20 @@ msgstr "Käyttäjän oikeudet eivät riitä kohteen tarkastelemiseen" msgid "Invalid unit provided ({unit})" msgstr "" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "Arvoa ei annettu" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" msgstr "" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" msgstr "" @@ -64,18 +64,18 @@ msgstr "Anna päivämäärä" #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 #: templates/js/translated/return_order.js:776 #: templates/js/translated/sales_order.js:1067 #: templates/js/translated/sales_order.js:1982 -#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 msgid "Notes" msgstr "Merkinnät" @@ -132,42 +132,42 @@ msgstr "Annetun sähköpostiosoitteen verkkotunnusta ei hyväksytä." msgid "Registration is disabled." msgstr "" -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "Annettu määrä on virheellinen" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "Tyhjä sarjanumero" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "Duplikaatti sarjanumero" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "Sarjanumeroita ei löytynyt" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "" @@ -203,131 +203,135 @@ msgstr "Etäpalvelin palautti tyhjän vastauksen" msgid "Supplied URL is not a valid image file" msgstr "Annettu URL ei ole kelvollinen kuvatiedosto" -#: InvenTree/locales.py:16 +#: InvenTree/locales.py:18 msgid "Bulgarian" msgstr "" -#: InvenTree/locales.py:17 +#: InvenTree/locales.py:19 msgid "Czech" msgstr "tšekki" -#: InvenTree/locales.py:18 +#: InvenTree/locales.py:20 msgid "Danish" msgstr "tanska" -#: InvenTree/locales.py:19 +#: InvenTree/locales.py:21 msgid "German" msgstr "saksa" -#: InvenTree/locales.py:20 +#: InvenTree/locales.py:22 msgid "Greek" msgstr "kreikka" -#: InvenTree/locales.py:21 +#: InvenTree/locales.py:23 msgid "English" msgstr "englanti" -#: InvenTree/locales.py:22 +#: InvenTree/locales.py:24 msgid "Spanish" msgstr "espanja" -#: InvenTree/locales.py:23 +#: InvenTree/locales.py:25 msgid "Spanish (Mexican)" msgstr "espanja (Meksiko)" -#: InvenTree/locales.py:24 +#: InvenTree/locales.py:26 msgid "Farsi / Persian" msgstr "farsi / persia" -#: InvenTree/locales.py:25 +#: InvenTree/locales.py:27 msgid "Finnish" msgstr "suomi" -#: InvenTree/locales.py:26 +#: InvenTree/locales.py:28 msgid "French" msgstr "ranska" -#: InvenTree/locales.py:27 +#: InvenTree/locales.py:29 msgid "Hebrew" msgstr "heprea" -#: InvenTree/locales.py:28 +#: InvenTree/locales.py:30 msgid "Hindi" msgstr "" -#: InvenTree/locales.py:29 +#: InvenTree/locales.py:31 msgid "Hungarian" msgstr "unkari" -#: InvenTree/locales.py:30 +#: InvenTree/locales.py:32 msgid "Italian" msgstr "italia" -#: InvenTree/locales.py:31 +#: InvenTree/locales.py:33 msgid "Japanese" msgstr "japani" -#: InvenTree/locales.py:32 +#: InvenTree/locales.py:34 msgid "Korean" msgstr "korea" -#: InvenTree/locales.py:33 +#: InvenTree/locales.py:35 +msgid "Latvian" +msgstr "" + +#: InvenTree/locales.py:36 msgid "Dutch" msgstr "hollanti" -#: InvenTree/locales.py:34 +#: InvenTree/locales.py:37 msgid "Norwegian" msgstr "norja" -#: InvenTree/locales.py:35 +#: InvenTree/locales.py:38 msgid "Polish" msgstr "puola" -#: InvenTree/locales.py:36 +#: InvenTree/locales.py:39 msgid "Portuguese" msgstr "portugali" -#: InvenTree/locales.py:37 +#: InvenTree/locales.py:40 msgid "Portuguese (Brazilian)" msgstr "portugali (Brasilia)" -#: InvenTree/locales.py:38 +#: InvenTree/locales.py:41 msgid "Russian" msgstr "venäjä" -#: InvenTree/locales.py:39 +#: InvenTree/locales.py:42 msgid "Slovak" msgstr "" -#: InvenTree/locales.py:40 +#: InvenTree/locales.py:43 msgid "Slovenian" msgstr "slovenia" -#: InvenTree/locales.py:41 +#: InvenTree/locales.py:44 msgid "Serbian" msgstr "" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:45 msgid "Swedish" msgstr "ruotsi" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:46 msgid "Thai" msgstr "thai" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:47 msgid "Turkish" msgstr "turkki" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:48 msgid "Vietnamese" msgstr "vietnam" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:49 msgid "Chinese (Simplified)" msgstr "" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:50 msgid "Chinese (Traditional)" msgstr "" @@ -391,7 +395,7 @@ msgstr "Puuttuva tiedosto" msgid "Missing external link" msgstr "Puuttuva ulkoinen linkki" -#: InvenTree/models.py:559 stock/models.py:2446 +#: InvenTree/models.py:559 stock/models.py:2449 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -401,7 +405,7 @@ msgstr "Liite" msgid "Select file to attach" msgstr "Valitse liitettävä tiedosto" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -432,13 +436,13 @@ msgstr "Kommentti" msgid "File comment" msgstr "Tiedoston kommentti" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:3000 users/models.py:100 +#: templates/js/translated/stock.js:3036 users/models.py:100 msgid "User" msgstr "Käyttäjä" @@ -479,10 +483,10 @@ msgstr "" msgid "Invalid choice" msgstr "Virheellinen valinta" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -495,7 +499,7 @@ msgstr "Virheellinen valinta" #: templates/js/translated/company.js:1155 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Nimi" @@ -506,10 +510,10 @@ msgstr "Nimi" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -523,7 +527,7 @@ msgstr "Nimi" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -531,8 +535,8 @@ msgstr "Nimi" #: templates/js/translated/return_order.js:314 #: templates/js/translated/sales_order.js:802 #: templates/js/translated/sales_order.js:1812 -#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021 -#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "Kuvaus" @@ -545,7 +549,7 @@ msgid "parent" msgstr "" #: InvenTree/models.py:916 templates/js/translated/part.js:2794 -#: templates/js/translated/stock.js:2721 +#: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Polku" @@ -581,7 +585,7 @@ msgstr "Palvelinvirhe" msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:62 part/models.py:4134 +#: InvenTree/serializers.py:62 part/models.py:4143 msgid "Must be a valid number" msgstr "Täytyy olla kelvollinen luku" @@ -596,89 +600,89 @@ msgstr "Valuutta" msgid "Select currency from available options" msgstr "Valitse valuutta käytettävissä olevista vaihtoehdoista" -#: InvenTree/serializers.py:436 +#: InvenTree/serializers.py:441 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:448 +#: InvenTree/serializers.py:453 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:467 +#: InvenTree/serializers.py:472 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:469 +#: InvenTree/serializers.py:474 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:476 +#: InvenTree/serializers.py:481 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:537 +#: InvenTree/serializers.py:542 msgid "Filename" msgstr "Tiedostonimi" -#: InvenTree/serializers.py:571 +#: InvenTree/serializers.py:576 msgid "Invalid value" msgstr "Virheellinen arvo" -#: InvenTree/serializers.py:591 +#: InvenTree/serializers.py:596 msgid "Data File" msgstr "Datatiedosto" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:597 msgid "Select data file for upload" msgstr "Valitse lähetettävä datatiedosto" -#: InvenTree/serializers.py:609 +#: InvenTree/serializers.py:614 msgid "Unsupported file type" msgstr "Tiedostotyyppiä ei tueta" -#: InvenTree/serializers.py:615 +#: InvenTree/serializers.py:620 msgid "File is too large" msgstr "Tiedosto on liian suuri" -#: InvenTree/serializers.py:636 +#: InvenTree/serializers.py:641 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:639 +#: InvenTree/serializers.py:644 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:752 +#: InvenTree/serializers.py:757 msgid "No data rows provided" msgstr "Datarivejä ei annettu" -#: InvenTree/serializers.py:755 +#: InvenTree/serializers.py:760 msgid "No data columns supplied" msgstr "Datasarakkeita ei annettu" -#: InvenTree/serializers.py:822 +#: InvenTree/serializers.py:827 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Vaadittu sarake puuttuu: '{name}'" -#: InvenTree/serializers.py:831 +#: InvenTree/serializers.py:836 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Duplikaatti sarake: '{col}'" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:859 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:855 +#: InvenTree/serializers.py:860 msgid "URL of remote image file" msgstr "Kuvatiedoston URL" -#: InvenTree/serializers.py:873 +#: InvenTree/serializers.py:878 msgid "Downloading images from remote URL is not enabled" msgstr "Kuvien lataaminen ei ole käytössä" -#: InvenTree/status.py:66 part/serializers.py:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "" @@ -818,7 +822,7 @@ msgstr "" msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 msgid "Merged stock items" msgstr "" @@ -838,7 +842,7 @@ msgstr "" msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 msgid "Consumed by build order" msgstr "" @@ -938,14 +942,14 @@ msgstr "Tietoja InvenTree:stä" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -960,7 +964,7 @@ msgid "Tracked" msgstr "" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -985,7 +989,7 @@ msgstr "Saatavilla" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "" @@ -1014,7 +1018,7 @@ msgstr "" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1044,11 +1048,11 @@ msgstr "" #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1059,7 +1063,7 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:267 stock/serializers.py:689 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1086,9 +1090,9 @@ msgstr "" #: templates/js/translated/sales_order.js:1598 #: templates/js/translated/sales_order.js:1796 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960 -#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054 -#: templates/js/translated/stock.js:3200 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 msgid "Part" msgstr "Osa" @@ -1146,8 +1150,8 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" @@ -1242,53 +1246,53 @@ msgstr "" msgid "Project code for this build order" msgstr "" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "" -#: build/models.py:789 +#: build/models.py:805 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" msgstr "" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1298,7 +1302,7 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:463 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1310,7 +1314,7 @@ msgstr "" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1325,43 +1329,43 @@ msgstr "" #: templates/js/translated/sales_order.js:1698 #: templates/js/translated/sales_order.js:1824 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 -#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985 -#: templates/js/translated/stock.js:3068 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "Määrä" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1381 +#: build/models.py:1397 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1390 +#: build/models.py:1406 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1473 +#: build/models.py:1489 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 @@ -1372,23 +1376,23 @@ msgstr "" #: templates/js/translated/sales_order.js:1605 #: templates/js/translated/sales_order.js:1692 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 -#: templates/js/translated/stock.js:2941 +#: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "Varastotuote" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "" @@ -1425,8 +1429,8 @@ msgstr "" msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Sarjanumerot" @@ -1451,10 +1455,10 @@ msgstr "" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1466,8 +1470,8 @@ msgstr "" #: templates/js/translated/sales_order.js:1627 #: templates/js/translated/sales_order.js:1706 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164 -#: templates/js/translated/stock.js:2835 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 msgid "Location" msgstr "Sijainti" @@ -1493,16 +1497,16 @@ msgstr "" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 #: templates/js/translated/purchase_order.js:1723 #: templates/js/translated/return_order.js:331 #: templates/js/translated/sales_order.js:819 -#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959 -#: templates/js/translated/stock.js:3084 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 msgid "Status" msgstr "Tila" @@ -1566,7 +1570,7 @@ msgstr "" msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "" @@ -1602,11 +1606,11 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1065 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" @@ -1619,7 +1623,7 @@ msgstr "" msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "" @@ -1659,44 +1663,45 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 #: stock/api.py:745 msgid "BOM Item" msgstr "" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1862,7 +1867,7 @@ msgstr "" #: templates/js/translated/pricing.js:929 #: templates/js/translated/sales_order.js:769 #: templates/js/translated/sales_order.js:992 -#: templates/js/translated/stock.js:2888 +#: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "" @@ -1920,8 +1925,8 @@ msgstr "" #: templates/js/translated/build.js:1377 #: templates/js/translated/model_renderers.js:235 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153 -#: templates/js/translated/stock.js:3091 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" @@ -1990,27 +1995,31 @@ msgstr "" msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:210 -msgid "Incomplete Build Outputs" -msgstr "" - -#: build/templates/build/detail.html:214 -msgid "Create new build output" +#: 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:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2026,15 +2035,15 @@ msgstr "" msgid "Attachments" msgstr "Liitteet" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" msgstr "" @@ -2112,1390 +2121,1414 @@ msgstr "" msgid "User or group responsible for this project" msgstr "" -#: common/models.py:737 +#: common/models.py:744 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:741 +#: common/models.py:748 msgid "Settings value" msgstr "" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "Ei ryhmää" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "Verkkotunnus ei saa olla tyhjä." -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "Virheellinen verkkotunnus: {domain}" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "Uudelleenkäynnistys vaaditaan" -#: common/models.py:1231 +#: common/models.py:1238 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "Yrityksen nimi" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "Yrityksen sisäinen nimi" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "Oletusvaluutta" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1283 +#: common/models.py:1290 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "päivää" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "" -#: common/models.py:1298 +#: common/models.py:1305 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "" -#: common/models.py:1305 +#: common/models.py:1312 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "" -#: common/models.py:1332 +#: common/models.py:1339 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "" -#: common/models.py:1339 +#: common/models.py:1346 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "Automaattinen varmuuskopionti" -#: common/models.py:1346 +#: common/models.py:1353 msgid "Enable automatic backup of database and media files" msgstr "Ota käyttöön tietokannan ja mediatiedostojen automaattinen varmuuskopiointi" -#: common/models.py:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "Automaattisen varmuuskopioinnin aikaväli" -#: common/models.py:1352 +#: common/models.py:1359 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1360 +#: common/models.py:1367 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1369 +#: common/models.py:1376 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1378 +#: common/models.py:1385 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Viivakoodituki" -#: common/models.py:1386 +#: common/models.py:1393 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1399 +#: common/models.py:1406 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "" -#: common/models.py:1411 +#: common/models.py:1418 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1415 +#: common/models.py:1422 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1421 +#: common/models.py:1428 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1427 +#: common/models.py:1434 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1433 +#: common/models.py:1440 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1439 +#: common/models.py:1446 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "Komponentti" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "Ostettavissa" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1505 +#: common/models.py:1512 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1512 +#: common/models.py:1519 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "" -#: common/models.py:1525 +#: common/models.py:1532 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1526 +#: common/models.py:1533 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1530 +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1532 +#: common/models.py:1539 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1540 +#: common/models.py:1547 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1548 +#: common/models.py:1555 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1564 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1580 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1588 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1595 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1603 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "Sisäiset hinnat" -#: common/models.py:1611 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "Sisäisen hinnan ohitus" -#: common/models.py:1618 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1632 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1645 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: 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:202 msgid "Page Size" msgstr "Sivun koko" -#: common/models.py:1651 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1657 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1664 +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1671 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "Täytä sarjanumerot automaattisesti" -#: common/models.py:1677 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1692 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1704 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1711 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1719 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1725 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1731 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1736 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1741 +#: 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 "Build Order Reference Pattern" msgstr "" -#: common/models.py:1743 +#: common/models.py:1764 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1757 +#: common/models.py:1778 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1765 +#: common/models.py:1786 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1773 +#: common/models.py:1794 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1780 +#: common/models.py:1801 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1787 +#: common/models.py:1808 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1795 +#: common/models.py:1816 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1803 +#: common/models.py:1824 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1811 +#: common/models.py:1832 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "Salli salasananpalautus" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "Salli rekisteröinti" -#: common/models.py:1825 +#: common/models.py:1846 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "Salli SSO" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "Salli SSO kirjautumissivuilla" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "Salli SSO rekisteröinti" -#: common/models.py:1838 +#: common/models.py:1859 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1844 +#: common/models.py:1865 msgid "Email required" msgstr "Sähköposti vaaditaan" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1852 +#: common/models.py:1873 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "Sähköpostiosoite kahdesti" -#: common/models.py:1859 +#: common/models.py:1880 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "Salasana kahdesti" -#: common/models.py:1865 +#: common/models.py:1886 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "Sallitut verkkotunnukset" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "" -#: common/models.py:1879 +#: common/models.py:1900 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "Pakota MFA" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1892 +#: common/models.py:1913 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1929 +#: common/models.py:1950 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "" -#: common/models.py:1936 +#: common/models.py:1957 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1950 +#: common/models.py:1971 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1958 +#: common/models.py:1979 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1966 +#: common/models.py:1987 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1974 +#: common/models.py:1995 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2029 common/models.py:2429 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2043 +#: common/models.py:2070 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2045 +#: common/models.py:2072 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2051 +#: common/models.py:2078 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2052 +#: common/models.py:2079 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2057 +#: common/models.py:2084 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2058 +#: common/models.py:2085 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2063 +#: common/models.py:2090 msgid "Show latest parts" msgstr "" -#: common/models.py:2064 +#: common/models.py:2091 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2069 +#: common/models.py:2096 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2070 +#: common/models.py:2097 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2075 +#: common/models.py:2102 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2076 +#: common/models.py:2103 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2081 +#: common/models.py:2108 msgid "Show low stock" msgstr "" -#: common/models.py:2082 +#: common/models.py:2109 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2087 +#: common/models.py:2114 msgid "Show depleted stock" msgstr "" -#: common/models.py:2088 +#: common/models.py:2115 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2093 +#: common/models.py:2120 msgid "Show needed stock" msgstr "" -#: common/models.py:2094 +#: common/models.py:2121 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2099 +#: common/models.py:2126 msgid "Show expired stock" msgstr "" -#: common/models.py:2100 +#: common/models.py:2127 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2105 +#: common/models.py:2132 msgid "Show stale stock" msgstr "" -#: common/models.py:2106 +#: common/models.py:2133 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2111 +#: common/models.py:2138 msgid "Show pending builds" msgstr "" -#: common/models.py:2112 +#: common/models.py:2139 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2117 +#: common/models.py:2144 msgid "Show overdue builds" msgstr "" -#: common/models.py:2118 +#: common/models.py:2145 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2123 +#: common/models.py:2150 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2124 +#: common/models.py:2151 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2129 +#: common/models.py:2156 msgid "Show overdue POs" msgstr "" -#: common/models.py:2130 +#: common/models.py:2157 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2135 +#: common/models.py:2162 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2136 +#: common/models.py:2163 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2141 +#: common/models.py:2168 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2142 +#: common/models.py:2169 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2147 +#: common/models.py:2174 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2148 +#: common/models.py:2175 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2153 +#: common/models.py:2180 msgid "Show News" msgstr "Näytä uutiset" -#: common/models.py:2154 +#: common/models.py:2181 msgid "Show news on the homepage" msgstr "Näytä uutiset kotisivulla" -#: common/models.py:2159 +#: common/models.py:2186 msgid "Inline label display" msgstr "" -#: common/models.py:2161 +#: common/models.py:2188 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2167 +#: common/models.py:2194 msgid "Default label printer" msgstr "" -#: common/models.py:2169 +#: common/models.py:2196 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2175 +#: common/models.py:2202 msgid "Inline report display" msgstr "" -#: common/models.py:2177 +#: common/models.py:2204 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2183 +#: common/models.py:2210 msgid "Search Parts" msgstr "" -#: common/models.py:2184 +#: common/models.py:2211 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2189 +#: common/models.py:2216 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2190 +#: common/models.py:2217 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2195 +#: common/models.py:2222 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2196 +#: common/models.py:2223 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2201 +#: common/models.py:2228 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2202 +#: common/models.py:2229 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2207 +#: common/models.py:2234 msgid "Search Categories" msgstr "" -#: common/models.py:2208 +#: common/models.py:2235 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2213 +#: common/models.py:2240 msgid "Search Stock" msgstr "" -#: common/models.py:2214 +#: common/models.py:2241 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2219 +#: common/models.py:2246 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2221 +#: common/models.py:2248 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2227 +#: common/models.py:2254 msgid "Search Locations" msgstr "" -#: common/models.py:2228 +#: common/models.py:2255 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2233 +#: common/models.py:2260 msgid "Search Companies" msgstr "" -#: common/models.py:2234 +#: common/models.py:2261 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2239 +#: common/models.py:2266 msgid "Search Build Orders" msgstr "" -#: common/models.py:2240 +#: common/models.py:2267 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2245 +#: common/models.py:2272 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2246 +#: common/models.py:2273 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2251 +#: common/models.py:2278 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2253 +#: common/models.py:2280 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2259 +#: common/models.py:2286 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2260 +#: common/models.py:2287 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2265 +#: common/models.py:2292 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2267 +#: common/models.py:2294 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2273 +#: common/models.py:2300 msgid "Search Return Orders" msgstr "" -#: common/models.py:2274 +#: common/models.py:2301 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2279 +#: common/models.py:2306 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2281 +#: common/models.py:2308 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2287 +#: common/models.py:2314 msgid "Search Preview Results" msgstr "" -#: common/models.py:2289 +#: common/models.py:2316 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2295 +#: common/models.py:2322 msgid "Regex Search" msgstr "" -#: common/models.py:2296 +#: common/models.py:2323 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2301 +#: common/models.py:2328 msgid "Whole Word Search" msgstr "" -#: common/models.py:2302 +#: common/models.py:2329 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2307 +#: common/models.py:2334 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2308 +#: common/models.py:2335 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2313 +#: common/models.py:2340 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2314 +#: common/models.py:2341 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2319 +#: common/models.py:2346 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2320 +#: common/models.py:2347 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2325 +#: common/models.py:2352 msgid "Date Format" msgstr "" -#: common/models.py:2326 +#: common/models.py:2353 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2366 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2340 +#: common/models.py:2367 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2372 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2347 +#: common/models.py:2374 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2353 +#: common/models.py:2380 msgid "Table String Length" msgstr "" -#: common/models.py:2355 +#: common/models.py:2382 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2361 +#: common/models.py:2388 msgid "Default part label template" msgstr "" -#: common/models.py:2362 +#: common/models.py:2389 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2367 +#: common/models.py:2394 msgid "Default stock item template" msgstr "" -#: common/models.py:2369 +#: common/models.py:2396 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2375 +#: common/models.py:2402 msgid "Default stock location label template" msgstr "" -#: common/models.py:2377 +#: common/models.py:2404 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2383 +#: common/models.py:2410 msgid "Receive error reports" msgstr "" -#: common/models.py:2384 +#: common/models.py:2411 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2389 +#: common/models.py:2416 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2417 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2460 msgid "Price break quantity" msgstr "" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3503,23 +3536,23 @@ msgstr "" msgid "Price" msgstr "Hinta" -#: common/models.py:2441 +#: common/models.py:2468 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2639 common/models.py:2824 msgid "Endpoint" msgstr "" -#: common/models.py:2613 +#: common/models.py:2640 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2623 +#: common/models.py:2650 msgid "Name for this webhook" msgstr "" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3529,101 +3562,101 @@ msgstr "" msgid "Active" msgstr "Aktiivinen" -#: common/models.py:2627 +#: common/models.py:2654 msgid "Is this webhook active" msgstr "" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2670 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2644 +#: common/models.py:2671 msgid "Token for access" msgstr "" -#: common/models.py:2652 +#: common/models.py:2679 msgid "Secret" msgstr "Salaisuus" -#: common/models.py:2653 +#: common/models.py:2680 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2761 +#: common/models.py:2788 msgid "Message ID" msgstr "" -#: common/models.py:2762 +#: common/models.py:2789 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2770 +#: common/models.py:2797 msgid "Host" msgstr "Isäntä" -#: common/models.py:2771 +#: common/models.py:2798 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2779 +#: common/models.py:2806 msgid "Header" msgstr "" -#: common/models.py:2780 +#: common/models.py:2807 msgid "Header of this message" msgstr "" -#: common/models.py:2787 +#: common/models.py:2814 msgid "Body" msgstr "" -#: common/models.py:2788 +#: common/models.py:2815 msgid "Body of this message" msgstr "" -#: common/models.py:2798 +#: common/models.py:2825 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2803 +#: common/models.py:2830 msgid "Worked on" msgstr "" -#: common/models.py:2804 +#: common/models.py:2831 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2930 +#: common/models.py:2957 msgid "Id" msgstr "" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2959 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "Otsikko" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2963 templates/js/translated/news.js:60 msgid "Published" msgstr "Julkaistu" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2965 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2967 templates/js/translated/news.js:52 msgid "Summary" msgstr "Yhteenveto" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Read" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Was this news item read?" msgstr "" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2987 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3633,31 +3666,31 @@ msgstr "" msgid "Image" msgstr "Kuva" -#: common/models.py:2960 +#: common/models.py:2987 msgid "Image file" msgstr "Kuvatiedosto" -#: common/models.py:3002 +#: common/models.py:3029 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3021 +#: common/models.py:3048 msgid "Unit name" msgstr "" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3029 +#: common/models.py:3056 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3037 +#: common/models.py:3064 msgid "Unit definition" msgstr "" @@ -3961,7 +3994,7 @@ msgid "Link to address information (external)" msgstr "" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" @@ -3972,7 +4005,7 @@ msgstr "" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3987,7 +4020,7 @@ msgid "Select manufacturer" msgstr "Valitse valmistaja" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4022,9 +4055,9 @@ msgstr "" #: company/models.py:615 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2438 templates/js/translated/company.js:1156 +#: stock/models.py:2441 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1519 msgid "Value" msgstr "Arvo" @@ -4033,7 +4066,7 @@ msgid "Parameter value" msgstr "" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4059,7 +4092,7 @@ msgstr "" #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4076,7 +4109,7 @@ msgstr "Toimittaja" msgid "Select supplier" msgstr "Valitse toimittaja" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "Toimittajan varastonimike" @@ -4093,13 +4126,13 @@ msgid "Supplier part description" msgstr "" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:579 msgid "Note" msgstr "Muistiinpano" @@ -4112,10 +4145,10 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 -#: templates/js/translated/stock.js:2387 +#: templates/js/translated/stock.js:2423 msgid "Packaging" msgstr "" @@ -4157,7 +4190,7 @@ msgstr "" msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "" @@ -4218,13 +4251,13 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1100 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 #: templates/js/translated/return_order.js:296 #: templates/js/translated/sales_order.js:784 -#: templates/js/translated/stock.js:2923 +#: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:804 msgid "Customer" msgstr "Asiakas" @@ -4429,8 +4462,9 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "" @@ -4482,7 +4516,7 @@ msgstr "" #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2243 +#: templates/js/translated/stock.js:2279 msgid "Supplier Part" msgstr "" @@ -4528,7 +4562,7 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4577,15 +4611,17 @@ msgstr "" msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 -#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:193 msgid "Stock Items" msgstr "" @@ -4639,8 +4675,8 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "Käytössä" @@ -4665,7 +4701,7 @@ msgstr "Korkeus [mm]" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "" @@ -4679,8 +4715,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "Suodattimet" @@ -4821,7 +4857,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1674 -#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "" @@ -4830,7 +4866,7 @@ msgstr "" #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 -#: templates/js/translated/stock.js:2905 +#: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "" @@ -4838,11 +4874,11 @@ msgstr "" msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "Tilauksen valuutta" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -5029,9 +5065,9 @@ msgstr "Vastaanotettu" msgid "Number of items received" msgstr "" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2274 +#: templates/js/translated/stock.js:2310 msgid "Purchase Price" msgstr "" @@ -5084,8 +5120,8 @@ msgstr "" msgid "User who checked this shipment" msgstr "" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "" @@ -5133,7 +5169,7 @@ msgstr "" msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "" @@ -5207,159 +5243,159 @@ msgstr "" msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Viivakoodi" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:610 +#: order/serializers.py:632 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1677 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "" @@ -5733,7 +5769,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "Toiminnot" @@ -5763,12 +5799,12 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5780,12 +5816,12 @@ msgstr "" #: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 -#: templates/js/translated/stock.js:1999 +#: templates/js/translated/stock.js:2035 msgid "IPN" msgstr "" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" @@ -5861,10 +5897,10 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -5885,17 +5921,17 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3897 msgid "Part IPN" msgstr "" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5973,8 +6009,8 @@ msgstr "" msgid "This option must be selected" msgstr "" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5982,12 +6018,17 @@ msgstr "" msgid "Category" msgstr "Kategoria" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5995,7 +6036,7 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -6010,7 +6051,8 @@ msgstr "" msgid "Default location for parts in this category" msgstr "" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 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" @@ -6076,7 +6118,7 @@ msgstr "" msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3896 msgid "Part name" msgstr "" @@ -6358,7 +6400,7 @@ msgstr "" #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1732 -#: templates/js/translated/stock.js:2785 +#: templates/js/translated/stock.js:2821 msgid "Date" msgstr "Päivämäärä" @@ -6410,586 +6452,602 @@ msgstr "" msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3448 -msgid "Test with this name already exists for this part" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "" -#: part/models.py:3496 +#: part/models.py:3505 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "" -#: part/models.py:3503 +#: part/models.py:3512 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3847 +#: part/models.py:3856 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3885 +#: part/models.py:3894 msgid "Part ID or part name" msgstr "" -#: part/models.py:3886 +#: part/models.py:3895 msgid "Unique part ID value" msgstr "" -#: part/models.py:3888 +#: part/models.py:3897 msgid "Part IPN value" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "Level" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "BOM level" msgstr "" -#: part/models.py:3979 +#: part/models.py:3988 msgid "Select parent part" msgstr "" -#: part/models.py:3989 +#: part/models.py:3998 msgid "Sub part" msgstr "" -#: part/models.py:3990 +#: part/models.py:3999 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4001 +#: part/models.py:4010 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4007 +#: part/models.py:4016 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4013 +#: part/models.py:4022 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4029 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4021 +#: part/models.py:4030 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4028 +#: part/models.py:4037 msgid "BOM item reference" msgstr "" -#: part/models.py:4036 +#: part/models.py:4045 msgid "BOM item notes" msgstr "" -#: part/models.py:4042 +#: part/models.py:4051 msgid "Checksum" msgstr "" -#: part/models.py:4043 +#: part/models.py:4052 msgid "BOM line checksum" msgstr "" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4057 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4049 +#: part/models.py:4058 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4063 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:4055 +#: part/models.py:4064 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4069 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4061 +#: part/models.py:4070 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4146 stock/models.py:649 +#: part/models.py:4155 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4165 part/models.py:4167 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4298 +#: part/models.py:4307 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4319 +#: part/models.py:4328 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4332 +#: part/models.py:4341 msgid "Parent BOM item" msgstr "" -#: part/models.py:4340 +#: part/models.py:4349 msgid "Substitute part" msgstr "" -#: part/models.py:4356 +#: part/models.py:4365 msgid "Part 1" msgstr "" -#: part/models.py:4364 +#: part/models.py:4373 msgid "Part 2" msgstr "" -#: part/models.py:4365 +#: part/models.py:4374 msgid "Select Related Part" msgstr "" -#: part/models.py:4384 +#: part/models.py:4393 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4389 +#: part/models.py:4398 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:432 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:480 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "Valmistajan osanumero" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1104 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1078 +#: part/serializers.py:1114 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1088 +#: part/serializers.py:1124 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "Luo raportti" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1647 +#: part/serializers.py:1693 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1659 +#: part/serializers.py:1705 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1694 +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "" @@ -7147,7 +7205,7 @@ msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/stock.js:2179 users/models.py:191 +#: templates/js/translated/stock.js:2215 users/models.py:191 msgid "Stocktake" msgstr "" @@ -7221,7 +7279,7 @@ msgid "Validate BOM" msgstr "" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "" @@ -7405,7 +7463,7 @@ msgstr "" msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "" @@ -7509,7 +7567,7 @@ msgstr "" #: templates/InvenTree/settings/sidebar.html:51 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 -#: templates/js/translated/stock.js:2033 templates/navbar.html:31 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7555,7 +7613,7 @@ msgstr "Muokkaa" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 -#: templates/js/translated/stock.js:2209 +#: templates/js/translated/stock.js:2245 msgid "Last Updated" msgstr "" @@ -7999,7 +8057,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "" @@ -8307,16 +8365,16 @@ msgstr "" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "" @@ -8336,103 +8394,111 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" msgstr "" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" msgstr "" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8499,12 +8565,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1492 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Result" msgstr "" @@ -8531,7 +8597,7 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:168 #: stock/admin.py:162 templates/js/translated/stock.js:700 -#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110 msgid "Serial" msgstr "Sarjanumero" @@ -8615,7 +8681,7 @@ msgstr "" #: stock/admin.py:256 stock/models.py:886 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2193 users/models.py:113 +#: templates/js/translated/stock.js:2229 users/models.py:113 msgid "Expiry Date" msgstr "" @@ -8713,7 +8779,7 @@ msgstr "" msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:174 templates/js/translated/stock.js:2745 +#: stock/models.py:174 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" @@ -8722,7 +8788,7 @@ msgstr "" msgid "This is an external stock location" msgstr "" -#: stock/models.py:181 templates/js/translated/stock.js:2754 +#: stock/models.py:181 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" @@ -8739,7 +8805,7 @@ msgstr "" msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:290 msgid "Stock item cannot be created for virtual parts" msgstr "" @@ -8784,7 +8850,7 @@ msgstr "" msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1351 msgid "Packaging this stock item is stored in" msgstr "" @@ -8796,7 +8862,7 @@ msgstr "" msgid "Serial number for this item" msgstr "" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1334 msgid "Batch code for this stock item" msgstr "" @@ -8873,7 +8939,7 @@ msgstr "" msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:529 msgid "Serial numbers already exist" msgstr "" @@ -8905,7 +8971,7 @@ msgstr "" msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1240 msgid "Duplicate stock items" msgstr "" @@ -8929,207 +8995,236 @@ msgstr "" msgid "Entry notes" msgstr "" -#: stock/models.py:2399 +#: stock/models.py:2402 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2405 +#: stock/models.py:2408 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Test result" msgstr "" -#: stock/models.py:2439 +#: stock/models.py:2442 msgid "Test output value" msgstr "" -#: stock/models.py:2447 +#: stock/models.py:2450 msgid "Test result attachment" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2454 msgid "Test notes" msgstr "" -#: stock/serializers.py:96 +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "" + +#: stock/models.py:2463 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2469 +msgid "Started" +msgstr "" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:100 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:119 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 +#: stock/serializers.py:151 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:184 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:267 +#: stock/serializers.py:282 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:380 +#: stock/serializers.py:402 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:442 +#: stock/serializers.py:464 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:455 +#: stock/serializers.py:477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:462 +#: stock/serializers.py:484 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:480 +#: stock/serializers.py:502 msgid "Optional note field" msgstr "" -#: stock/serializers.py:490 +#: stock/serializers.py:512 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:545 +#: stock/serializers.py:567 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:574 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:553 +#: stock/serializers.py:575 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:566 +#: stock/serializers.py:588 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:596 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:581 +#: stock/serializers.py:607 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:620 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:628 +#: stock/serializers.py:655 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:663 +#: stock/serializers.py:690 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:676 +#: stock/serializers.py:703 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:693 +#: stock/serializers.py:720 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:724 +#: stock/serializers.py:751 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:761 +#: stock/serializers.py:788 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:767 +#: stock/serializers.py:794 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1036 +#: stock/serializers.py:1069 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1040 +#: stock/serializers.py:1073 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1044 +#: stock/serializers.py:1077 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1068 +#: stock/serializers.py:1101 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1074 +#: stock/serializers.py:1107 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1082 +#: stock/serializers.py:1115 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1125 stock/serializers.py:1379 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1171 +#: stock/serializers.py:1204 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1176 +#: stock/serializers.py:1209 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1177 +#: stock/serializers.py:1210 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1182 +#: stock/serializers.py:1215 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1183 +#: stock/serializers.py:1216 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1193 +#: stock/serializers.py:1226 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1260 +#: stock/serializers.py:1293 msgid "No Change" msgstr "" -#: stock/serializers.py:1289 +#: stock/serializers.py:1322 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1308 +#: stock/serializers.py:1341 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1336 +#: stock/serializers.py:1369 msgid "Stock transaction notes" msgstr "" @@ -9154,7 +9249,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 msgid "Delete Test Data" msgstr "" @@ -9170,15 +9265,15 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:274 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 msgid "Add Test Result" msgstr "" @@ -9201,17 +9296,17 @@ msgid "Stock adjustment actions" msgstr "" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 msgid "Count stock" msgstr "" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:1803 msgid "Add stock" msgstr "" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1776 +#: templates/js/translated/stock.js:1812 msgid "Remove stock" msgstr "" @@ -9220,12 +9315,12 @@ msgid "Serialize stock" msgstr "" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 msgid "Transfer stock" msgstr "" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1884 msgid "Assign to customer" msgstr "" @@ -9364,7 +9459,7 @@ msgid "No stocktake performed" msgstr "" #: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1915 +#: templates/js/translated/stock.js:1951 msgid "stock item" msgstr "" @@ -9469,7 +9564,7 @@ msgid "New Location" msgstr "Uusi sijainti" #: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2536 +#: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" @@ -10063,7 +10158,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:37 msgid "New Location Type" msgstr "" @@ -10120,7 +10215,7 @@ msgstr "" msgid "Stock Settings" msgstr "" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:33 msgid "Stock Location Types" msgstr "" @@ -10662,7 +10757,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "" @@ -10676,7 +10771,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "" @@ -11051,62 +11146,66 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "" @@ -11389,7 +11488,7 @@ msgstr "" #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 -#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11401,7 +11500,7 @@ msgstr "" msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006 +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" @@ -11449,29 +11548,29 @@ msgstr "" msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "" @@ -11804,15 +11903,15 @@ msgstr "" msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3087 +#: templates/js/translated/forms.js:3103 msgid "Select Columns" msgstr "" @@ -12289,7 +12388,7 @@ msgid "No category" msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 -#: templates/js/translated/stock.js:2633 +#: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" @@ -12301,7 +12400,7 @@ msgstr "" msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" @@ -12313,64 +12412,64 @@ msgstr "" msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" @@ -12907,7 +13006,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1737 +#: templates/js/translated/stock.js:1773 msgid "Shipped to customer" msgstr "" @@ -13165,7 +13264,7 @@ msgstr "" msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" @@ -13189,248 +13288,256 @@ msgstr "" msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1440 +#: templates/js/translated/stock.js:1447 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1443 +#: templates/js/translated/stock.js:1450 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1466 +#: templates/js/translated/stock.js:1473 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1530 +#: templates/js/translated/stock.js:1537 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1677 +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1733 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1729 +#: templates/js/translated/stock.js:1765 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1769 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1741 +#: templates/js/translated/stock.js:1777 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1747 +#: templates/js/translated/stock.js:1783 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1839 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1848 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:1897 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1916 +#: templates/js/translated/stock.js:1952 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1921 +#: templates/js/translated/stock.js:1957 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1932 +#: templates/js/translated/stock.js:1968 msgid "Stock Actions" msgstr "" -#: templates/js/translated/stock.js:1976 +#: templates/js/translated/stock.js:2012 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2054 +#: templates/js/translated/stock.js:2090 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2059 +#: templates/js/translated/stock.js:2095 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2062 +#: templates/js/translated/stock.js:2098 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2065 +#: templates/js/translated/stock.js:2101 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2067 +#: templates/js/translated/stock.js:2103 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2069 +#: templates/js/translated/stock.js:2105 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2072 +#: templates/js/translated/stock.js:2108 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2074 +#: templates/js/translated/stock.js:2110 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2114 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2080 +#: templates/js/translated/stock.js:2116 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2085 +#: templates/js/translated/stock.js:2121 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2087 +#: templates/js/translated/stock.js:2123 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2089 +#: templates/js/translated/stock.js:2125 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2129 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2258 +#: templates/js/translated/stock.js:2294 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2305 +#: templates/js/translated/stock.js:2341 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2433 +#: templates/js/translated/stock.js:2469 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2573 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2692 +#: templates/js/translated/stock.js:2728 msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2810 +#: templates/js/translated/stock.js:2846 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2814 +#: templates/js/translated/stock.js:2850 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:2862 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2848 +#: templates/js/translated/stock.js:2884 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2865 +#: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2880 +#: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2897 +#: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2914 +#: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3005 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2977 +#: templates/js/translated/stock.js:3013 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:3049 +#: templates/js/translated/stock.js:3085 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139 +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:3161 +#: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:3182 +#: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:3183 +#: 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:3185 +#: 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:3186 +#: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:3187 +#: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:3188 +#: 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:3201 +#: templates/js/translated/stock.js:3237 msgid "Select part to install" msgstr "" -#: templates/js/translated/stock.js:3264 +#: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" msgstr "" -#: templates/js/translated/stock.js:3277 +#: templates/js/translated/stock.js:3313 msgid "Selected stock items" msgstr "" -#: templates/js/translated/stock.js:3281 +#: templates/js/translated/stock.js:3317 msgid "Change Stock Status" msgstr "" diff --git a/InvenTree/locale/fr/LC_MESSAGES/django.po b/InvenTree/locale/fr/LC_MESSAGES/django.po index 5fd400cca7..a08418ce8e 100644 --- a/InvenTree/locale/fr/LC_MESSAGES/django.po +++ b/InvenTree/locale/fr/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 04:05+0000\n" -"PO-Revision-Date: 2024-02-28 07:23\n" +"POT-Creation-Date: 2024-03-19 01:26+0000\n" +"PO-Revision-Date: 2024-03-20 12:27\n" "Last-Translator: \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -28,22 +28,22 @@ msgstr "L'utilisateur n'a pas la permission de voir ce modèle" #: InvenTree/conversion.py:160 #, python-brace-format msgid "Invalid unit provided ({unit})" -msgstr "" +msgstr "Unité fournie invalide ({unit})" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "Pas de valeur renseignée" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "Impossible de convertir {original} en {unit}" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" msgstr "Quantité fournie invalide" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" msgstr "Quantité fournie invalide ({exc})" @@ -64,18 +64,18 @@ msgstr "Entrer la date" #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 #: templates/js/translated/return_order.js:776 #: templates/js/translated/sales_order.js:1067 #: templates/js/translated/sales_order.js:1982 -#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 msgid "Notes" msgstr "Notes" @@ -132,42 +132,42 @@ msgstr "Le domaine e-mail fourni n'est pas approuvé." msgid "Registration is disabled." msgstr "L'enregistrement est désactivé." -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "Quantité fournie invalide" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "Chaîne de numéro de série vide" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "Numéro de série en doublon" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "Plage de groupe non valide : {group}" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "La plage de groupe {group} dépasse la quantité autorisée ({expected_quantity})" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "Séquence de groupe invalide : {group}" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "Aucun numéro de série trouvé" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "Le nombre de numéros de série uniques ({len(serials)}) doit correspondre à la quantité ({expected_quantity})" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "Retirer les balises HTML de cette valeur" @@ -203,138 +203,142 @@ msgstr "Le serveur distant a renvoyé une réponse vide" msgid "Supplied URL is not a valid image file" msgstr "L'URL fournie n'est pas un fichier image valide" -#: InvenTree/locales.py:16 +#: InvenTree/locales.py:18 msgid "Bulgarian" msgstr "Bulgare" -#: InvenTree/locales.py:17 +#: InvenTree/locales.py:19 msgid "Czech" msgstr "Tchèque" -#: InvenTree/locales.py:18 +#: InvenTree/locales.py:20 msgid "Danish" msgstr "Danois" -#: InvenTree/locales.py:19 +#: InvenTree/locales.py:21 msgid "German" msgstr "Allemand" -#: InvenTree/locales.py:20 +#: InvenTree/locales.py:22 msgid "Greek" msgstr "Grec" -#: InvenTree/locales.py:21 +#: InvenTree/locales.py:23 msgid "English" msgstr "Anglais" -#: InvenTree/locales.py:22 +#: InvenTree/locales.py:24 msgid "Spanish" msgstr "Espagnol" -#: InvenTree/locales.py:23 +#: InvenTree/locales.py:25 msgid "Spanish (Mexican)" msgstr "Espagnol (Mexique)" -#: InvenTree/locales.py:24 +#: InvenTree/locales.py:26 msgid "Farsi / Persian" msgstr "Farsi / Perse" -#: InvenTree/locales.py:25 +#: InvenTree/locales.py:27 msgid "Finnish" msgstr "Finnois" -#: InvenTree/locales.py:26 +#: InvenTree/locales.py:28 msgid "French" msgstr "Français" -#: InvenTree/locales.py:27 +#: InvenTree/locales.py:29 msgid "Hebrew" msgstr "Hébreu" -#: InvenTree/locales.py:28 +#: InvenTree/locales.py:30 msgid "Hindi" msgstr "Hindi" -#: InvenTree/locales.py:29 +#: InvenTree/locales.py:31 msgid "Hungarian" msgstr "Hongrois" -#: InvenTree/locales.py:30 +#: InvenTree/locales.py:32 msgid "Italian" msgstr "Italien" -#: InvenTree/locales.py:31 +#: InvenTree/locales.py:33 msgid "Japanese" msgstr "Japonais" -#: InvenTree/locales.py:32 +#: InvenTree/locales.py:34 msgid "Korean" msgstr "Coréen" -#: InvenTree/locales.py:33 +#: InvenTree/locales.py:35 +msgid "Latvian" +msgstr "Letton" + +#: InvenTree/locales.py:36 msgid "Dutch" msgstr "Néerlandais" -#: InvenTree/locales.py:34 +#: InvenTree/locales.py:37 msgid "Norwegian" msgstr "Norvégien" -#: InvenTree/locales.py:35 +#: InvenTree/locales.py:38 msgid "Polish" msgstr "Polonais" -#: InvenTree/locales.py:36 +#: InvenTree/locales.py:39 msgid "Portuguese" msgstr "Portugais" -#: InvenTree/locales.py:37 +#: InvenTree/locales.py:40 msgid "Portuguese (Brazilian)" msgstr "Portugais (Brésilien)" -#: InvenTree/locales.py:38 +#: InvenTree/locales.py:41 msgid "Russian" msgstr "Russe" -#: InvenTree/locales.py:39 +#: InvenTree/locales.py:42 msgid "Slovak" -msgstr "" +msgstr "Slovaque" -#: InvenTree/locales.py:40 +#: InvenTree/locales.py:43 msgid "Slovenian" msgstr "Slovénien" -#: InvenTree/locales.py:41 +#: InvenTree/locales.py:44 msgid "Serbian" msgstr "Serbe" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:45 msgid "Swedish" msgstr "Suédois" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:46 msgid "Thai" msgstr "Thaïlandais" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:47 msgid "Turkish" msgstr "Turc" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:48 msgid "Vietnamese" msgstr "Vietnamien" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:49 msgid "Chinese (Simplified)" msgstr "Chinois (Simplifié)" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:50 msgid "Chinese (Traditional)" msgstr "Chinois (Traditionnel)" #: InvenTree/magic_login.py:28 #, python-brace-format msgid "[{site_name}] Log in to the app" -msgstr "" +msgstr "[{site_name}] Se connecter à l'application" #: InvenTree/magic_login.py:38 company/models.py:132 #: company/templates/company/company_base.html:132 @@ -345,7 +349,7 @@ msgstr "E-mail" #: InvenTree/models.py:107 msgid "Error running plugin validation" -msgstr "" +msgstr "Erreur lors de l'exécution de la validation du plugin" #: InvenTree/models.py:162 msgid "Metadata must be a python dict object" @@ -391,7 +395,7 @@ msgstr "Fichier manquant" msgid "Missing external link" msgstr "Lien externe manquant" -#: InvenTree/models.py:559 stock/models.py:2446 +#: InvenTree/models.py:559 stock/models.py:2449 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -401,7 +405,7 @@ msgstr "Pièce jointe" msgid "Select file to attach" msgstr "Sélectionnez un fichier à joindre" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -432,13 +436,13 @@ msgstr "Commentaire" msgid "File comment" msgstr "Commentaire du fichier" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:3000 users/models.py:100 +#: templates/js/translated/stock.js:3036 users/models.py:100 msgid "User" msgstr "Utilisateur" @@ -479,10 +483,10 @@ msgstr "Les noms dupliqués ne peuvent pas exister sous le même parent" msgid "Invalid choice" msgstr "Choix invalide" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -495,7 +499,7 @@ msgstr "Choix invalide" #: templates/js/translated/company.js:1155 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Nom" @@ -506,10 +510,10 @@ msgstr "Nom" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -523,7 +527,7 @@ msgstr "Nom" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -531,8 +535,8 @@ msgstr "Nom" #: templates/js/translated/return_order.js:314 #: templates/js/translated/sales_order.js:802 #: templates/js/translated/sales_order.js:1812 -#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021 -#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "Description" @@ -545,7 +549,7 @@ msgid "parent" msgstr "parent" #: InvenTree/models.py:916 templates/js/translated/part.js:2794 -#: templates/js/translated/stock.js:2721 +#: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Chemin d'accès" @@ -581,7 +585,7 @@ msgstr "Erreur serveur" 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:4134 +#: InvenTree/serializers.py:62 part/models.py:4143 msgid "Must be a valid number" msgstr "Doit être un nombre valide" @@ -596,89 +600,89 @@ msgstr "Devise" msgid "Select currency from available options" msgstr "Sélectionnez la devise à partir des options disponibles" -#: InvenTree/serializers.py:436 +#: InvenTree/serializers.py:441 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:448 +#: InvenTree/serializers.py:453 msgid "Only superusers can create new users" msgstr "Seuls les super-utilisateurs peuvent créer de nouveaux utilisateurs" -#: InvenTree/serializers.py:467 +#: InvenTree/serializers.py:472 msgid "Your account has been created." -msgstr "" +msgstr "Votre compte a été créé." -#: InvenTree/serializers.py:469 +#: InvenTree/serializers.py:474 msgid "Please use the password reset function to login" -msgstr "" +msgstr "Veuillez utiliser la fonction de réinitialisation du mot de passe pour vous connecter" -#: InvenTree/serializers.py:476 +#: InvenTree/serializers.py:481 msgid "Welcome to InvenTree" -msgstr "" +msgstr "Bienvenue dans InvenTree" -#: InvenTree/serializers.py:537 +#: InvenTree/serializers.py:542 msgid "Filename" msgstr "Nom du fichier" -#: InvenTree/serializers.py:571 +#: InvenTree/serializers.py:576 msgid "Invalid value" msgstr "Valeur non valide" -#: InvenTree/serializers.py:591 +#: InvenTree/serializers.py:596 msgid "Data File" msgstr "Fichier de données" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:597 msgid "Select data file for upload" msgstr "Sélectionnez le fichier de données à envoyer" -#: InvenTree/serializers.py:609 +#: InvenTree/serializers.py:614 msgid "Unsupported file type" msgstr "Format de fichier non supporté" -#: InvenTree/serializers.py:615 +#: InvenTree/serializers.py:620 msgid "File is too large" msgstr "Fichier trop volumineux" -#: InvenTree/serializers.py:636 +#: InvenTree/serializers.py:641 msgid "No columns found in file" msgstr "Pas de colonnes trouvées dans le fichier" -#: InvenTree/serializers.py:639 +#: InvenTree/serializers.py:644 msgid "No data rows found in file" msgstr "Par de lignes de données trouvées dans le fichier" -#: InvenTree/serializers.py:752 +#: InvenTree/serializers.py:757 msgid "No data rows provided" msgstr "Pas de lignes de données fournies" -#: InvenTree/serializers.py:755 +#: InvenTree/serializers.py:760 msgid "No data columns supplied" msgstr "Pas de colonne de données fournie" -#: InvenTree/serializers.py:822 +#: InvenTree/serializers.py:827 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Colonne requise manquante : {name}" -#: InvenTree/serializers.py:831 +#: InvenTree/serializers.py:836 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Colonne duliquée : '{col}'" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:859 msgid "Remote Image" msgstr "Images distantes" -#: InvenTree/serializers.py:855 +#: InvenTree/serializers.py:860 msgid "URL of remote image file" msgstr "URL du fichier image distant" -#: InvenTree/serializers.py:873 +#: InvenTree/serializers.py:878 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:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "Échec de la vérification du processus d'arrière-plan" @@ -818,7 +822,7 @@ msgstr "Séparer de l'élément parent" msgid "Split child item" msgstr "Fractionner l'élément enfant" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 msgid "Merged stock items" msgstr "Articles de stock fusionnés" @@ -838,7 +842,7 @@ msgstr "Sortie de l'ordre de construction terminée" msgid "Build order output rejected" msgstr "La sortie de l'ordre de construction a été refusée" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 msgid "Consumed by build order" msgstr "Consommé par ordre de construction" @@ -938,14 +942,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:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "Consommable" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -960,7 +964,7 @@ msgid "Tracked" msgstr "Suivi" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -985,7 +989,7 @@ msgstr "Disponible" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "Ordre de Fabrication" @@ -1014,7 +1018,7 @@ msgstr "Référence de l' Ordre de Fabrication" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1044,11 +1048,11 @@ msgstr "BuildOrder associé a cette fabrication" #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1059,7 +1063,7 @@ msgstr "BuildOrder associé a cette fabrication" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:267 stock/serializers.py:689 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1086,9 +1090,9 @@ msgstr "BuildOrder associé a cette fabrication" #: templates/js/translated/sales_order.js:1598 #: templates/js/translated/sales_order.js:1796 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960 -#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054 -#: templates/js/translated/stock.js:3200 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 msgid "Part" msgstr "Pièce" @@ -1146,8 +1150,8 @@ msgstr "État de la construction" msgid "Build status code" msgstr "Code de statut de construction" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Code de lot" @@ -1242,53 +1246,53 @@ msgstr "Code du projet" msgid "Project code for this build order" msgstr "Code de projet pour cet ordre de construction" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" msgstr "La commande de construction {build} a été effectuée" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "Une commande de construction a été effectuée" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "Pas d'ordre de production défini" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "L'ordre de production a déjà été réalisé" -#: build/models.py:789 +#: build/models.py:805 msgid "Build output does not match Build Order" msgstr "L'ordre de production de correspond pas à l'ordre de commande" -#: build/models.py:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 msgid "Quantity must be greater than zero" msgstr "La quantité doit être supérieure à zéro" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 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:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" -msgstr "" +msgstr "La sortie de compilation {serial} n'a pas réussi tous les tests requis" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" msgstr "Création de l'objet" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1298,7 +1302,7 @@ msgstr "Création de l'objet" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:463 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1310,7 +1314,7 @@ msgstr "Création de l'objet" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1325,43 +1329,43 @@ msgstr "Création de l'objet" #: templates/js/translated/sales_order.js:1698 #: templates/js/translated/sales_order.js:1824 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 -#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985 -#: templates/js/translated/stock.js:3068 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "Quantité" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" msgstr "Quantité requise pour la commande de construction" -#: build/models.py:1381 +#: build/models.py:1397 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:1390 +#: build/models.py:1406 #, 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:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "L'article de stock est suralloué" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "La quantité allouée doit être supérieure à zéro" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "La quantité doit être de 1 pour stock sérialisé" -#: build/models.py:1473 +#: build/models.py:1489 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:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 @@ -1372,23 +1376,23 @@ msgstr "L'article de stock sélectionné ne correspond pas à la ligne BOM" #: templates/js/translated/sales_order.js:1605 #: templates/js/translated/sales_order.js:1692 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 -#: templates/js/translated/stock.js:2941 +#: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "Article en stock" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "Stock d'origine de l'article" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "Quantité de stock à allouer à la construction" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "Installer dans" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "Stock de destination de l'article" @@ -1425,8 +1429,8 @@ msgstr "Quantité entière requise pour les pièces à suivre" 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:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 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" @@ -1451,10 +1455,10 @@ msgstr "Les numéros de série suivants existent déjà, ou sont invalides" msgid "A list of build outputs must be provided" msgstr "Une liste d'ordre de production doit être fourni" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1466,8 +1470,8 @@ msgstr "Une liste d'ordre de production doit être fourni" #: templates/js/translated/sales_order.js:1627 #: templates/js/translated/sales_order.js:1706 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164 -#: templates/js/translated/stock.js:2835 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 msgid "Location" msgstr "Emplacement" @@ -1493,16 +1497,16 @@ msgstr "Emplacement des ordres de production achevés" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 #: templates/js/translated/purchase_order.js:1723 #: templates/js/translated/return_order.js:331 #: templates/js/translated/sales_order.js:819 -#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959 -#: templates/js/translated/stock.js:3084 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 msgid "Status" msgstr "État" @@ -1566,7 +1570,7 @@ msgstr "Accepter les articles de stock qui n'ont pas été complètement alloué msgid "Required stock has not been fully allocated" msgstr "Le stock requis n'a pas encore été totalement alloué" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "Accepter les incomplèts" @@ -1602,11 +1606,11 @@ msgstr "Élément de la ligne de construction" 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:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1065 msgid "Item must be in stock" msgstr "L'article doit être en stock" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Quantité disponible ({q}) dépassée" @@ -1619,7 +1623,7 @@ msgstr "La sortie de construction doit être spécifiée pour l'allocation des p 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:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "Les articles d'allocation doivent être fournis" @@ -1659,44 +1663,45 @@ msgstr "Objets Optionnels" msgid "Allocate optional BOM items to build order" msgstr "Affecter des éléments de nomenclature facultatifs à l'ordre de fabrication" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 #: stock/api.py:745 msgid "BOM Item" msgstr "Article du BOM" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" -msgstr "" +msgstr "Stock alloué" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "En Commande" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" -msgstr "" +msgstr "En Production" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" -msgstr "" +msgstr "Stock disponible" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "Stock requis pour la commande de construction" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "Ordre de commande en retard" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "L'ordre de commande {bo} est maintenant en retard" @@ -1862,7 +1867,7 @@ msgstr "Sorties de Construction terminées" #: templates/js/translated/pricing.js:929 #: templates/js/translated/sales_order.js:769 #: templates/js/translated/sales_order.js:992 -#: templates/js/translated/stock.js:2888 +#: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "Commandes" @@ -1880,15 +1885,15 @@ msgstr "Priorité" #: build/templates/build/build_base.html:273 msgid "Delete Build Order" -msgstr "" +msgstr "Supprimer la commande de construction" #: build/templates/build/build_base.html:283 msgid "Build Order QR Code" -msgstr "" +msgstr "Génération du QR Code de commande" #: build/templates/build/build_base.html:295 msgid "Link Barcode to Build Order" -msgstr "" +msgstr "Lier le code-barres pour construire la commande" #: build/templates/build/detail.html:15 msgid "Build Details" @@ -1920,8 +1925,8 @@ msgstr "Pièces allouées" #: templates/js/translated/build.js:1377 #: templates/js/translated/model_renderers.js:235 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153 -#: templates/js/translated/stock.js:3091 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" @@ -1990,27 +1995,31 @@ msgstr "Commander les pièces requises" msgid "Order Parts" msgstr "Commander des pièces" -#: build/templates/build/detail.html:210 +#: build/templates/build/detail.html:205 +msgid "Available stock has been filtered based on specified source location for this build order" +msgstr "Le stock disponible a été filtré en fonction de l'emplacement source spécifié pour cette commande de construction" + +#: build/templates/build/detail.html:215 msgid "Incomplete Build Outputs" msgstr "Sorties de construction incomplètes" -#: build/templates/build/detail.html:214 +#: build/templates/build/detail.html:219 msgid "Create new build output" msgstr "Créer une nouvelle sortie de construction" -#: build/templates/build/detail.html:215 +#: build/templates/build/detail.html:220 msgid "New Build Output" msgstr "Nouvelle sortie de construction" -#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "Stock Consommé" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "Sorties de Construction terminées" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2026,17 +2035,17 @@ msgstr "Sorties de Construction terminées" msgid "Attachments" msgstr "Pieces jointes" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "Notes de construction" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" -msgstr "" +msgstr "Allocation terminée" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" -msgstr "" +msgstr "Toutes les lignes ont été entièrement attribuées" #: build/templates/build/index.html:18 part/templates/part/detail.html:319 msgid "New Build Order" @@ -2098,7 +2107,7 @@ msgstr "Date de la dernière mise à jour" #: common/models.py:105 msgid "Site URL is locked by configuration" -msgstr "" +msgstr "L'URL du site est verrouillée par configuration" #: common/models.py:130 msgid "Unique project code" @@ -2112,1390 +2121,1414 @@ msgstr "Description du projet" msgid "User or group responsible for this project" msgstr "Utilisateur ou groupe responsable de ce projet" -#: common/models.py:737 +#: common/models.py:744 msgid "Settings key (must be unique - case insensitive)" msgstr "Clé du paramètre (doit être unique - insensible à la casse)" -#: common/models.py:741 +#: common/models.py:748 msgid "Settings value" msgstr "Valeur du paramètre" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "La valeur choisie n'est pas une option valide" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "La valeur doit être une valeur booléenne" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "La valeur doit être un nombre entier" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "La chaîne de caractères constituant la clé doit être unique" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "Pas de groupe" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "Un domaine vide n'est pas autorisé." -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "Nom de domaine invalide : {domain}" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "Pas de plugin" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "Redémarrage nécessaire" -#: common/models.py:1231 +#: common/models.py:1238 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:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "Migration en attente" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "Nombre de migrations de base de données en attente" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "Nom de l'instance du serveur" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "Chaîne de caractères descriptive pour l'instance serveur" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "Utiliser le nom de l'instance" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "Utiliser le nom de l’instance dans la barre de titre" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "Limiter l'affichage de `about`" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "Afficher la modale `about` uniquement aux super-utilisateurs" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "Nom de la société" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "Nom de société interne" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "URL de base" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "URL de base pour l'instance serveur" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "Devise par défaut" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "Sélectionnez la devise de base pour les calculs de prix" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "Intervalle de mise à jour des devises" -#: common/models.py:1283 +#: common/models.py:1290 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:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "jours" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "Plugin de mise à jour de devise" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" msgstr "Plugin de mise à jour des devises à utiliser" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "Télécharger depuis l'URL" -#: common/models.py:1298 +#: common/models.py:1305 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:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "Limite du volume de téléchargement" -#: common/models.py:1305 +#: common/models.py:1312 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:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "Agent utilisateur utilisé pour télécharger depuis l'URL" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "Validation stricte d'URL" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "Spécification du schéma nécessaire lors de la validation des URL" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "Confirmation requise" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "Exiger une confirmation explicite de l’utilisateur pour certaines actions." -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "Profondeur de l'arborescence" -#: common/models.py:1332 +#: common/models.py:1339 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:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "Intervalle de vérification des mises à jour" -#: common/models.py:1339 +#: common/models.py:1346 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:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "Backup automatique" -#: common/models.py:1346 +#: common/models.py:1353 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:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "Intervalle de sauvegarde automatique" -#: common/models.py:1352 +#: common/models.py:1359 msgid "Specify number of days between automated backup events" msgstr "Spécifiez le nombre de jours entre les sauvegardes automatique" -#: common/models.py:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "Intervalle de suppression des tâches" -#: common/models.py:1360 +#: common/models.py:1367 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:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "Intervalle de suppression du journal d'erreur" -#: common/models.py:1369 +#: common/models.py:1376 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:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "Intervalle de suppression du journal de notification" -#: common/models.py:1378 +#: common/models.py:1385 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:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Support des code-barres" -#: common/models.py:1386 +#: common/models.py:1393 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:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "Délai d'entrée du code-barres" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "Délai de traitement du code-barres" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "Prise en charge de la webcam code-barres" -#: common/models.py:1399 +#: common/models.py:1406 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:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "Modifications de la pièce" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" msgstr "Activer le champ de modification de la pièce" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "Regex IPN" -#: common/models.py:1411 +#: common/models.py:1418 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:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "Autoriser les IPN dupliqués" -#: common/models.py:1415 +#: common/models.py:1422 msgid "Allow multiple parts to share the same IPN" msgstr "Permettre à plusieurs pièces de partager le même IPN" -#: common/models.py:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "Autoriser l'édition de l'IPN" -#: common/models.py:1421 +#: common/models.py:1428 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:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "Copier les données de la pièce" -#: common/models.py:1427 +#: common/models.py:1434 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:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "Copier les données des paramètres de la pièce" -#: common/models.py:1433 +#: common/models.py:1440 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:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "Copier les données de test de la pièce" -#: common/models.py:1439 +#: common/models.py:1446 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:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "Copier les templates de paramètres de catégorie" -#: common/models.py:1445 +#: common/models.py:1452 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:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "Modèle" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "Les pièces sont des templates par défaut" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 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:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "Composant" -#: common/models.py:1463 +#: common/models.py:1470 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:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "Achetable" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "Les pièces sont achetables par défaut" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "Vendable" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "Les pièces sont vendables par défaut" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "Les pièces sont traçables par défaut" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "Les pièces sont virtuelles par défaut" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "Afficher l'import dans les vues" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Display the import wizard in some part views" msgstr "Afficher l'assistant d'importation pour certaine vues de produits" -#: common/models.py:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "Afficher les pièces connexes" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" msgstr "Afficher les pièces connexes à une pièce" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "Stock initial" -#: common/models.py:1505 +#: common/models.py:1512 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:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Données initiales du fournisseur" -#: common/models.py:1512 +#: common/models.py:1519 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:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "Format d'affichage du nom de la pièce" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "Format pour afficher le nom de la pièce" -#: common/models.py:1525 +#: common/models.py:1532 msgid "Part Category Default Icon" msgstr "Icône de catégorie par défaut" -#: common/models.py:1526 +#: common/models.py:1533 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:1530 +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "Renforcer les unités des paramètres" -#: common/models.py:1532 +#: common/models.py:1539 msgid "If units are provided, parameter values must match the specified units" -msgstr "" +msgstr "Si des unités sont fournies, les valeurs de paramètre doivent correspondre aux unités spécifiées" -#: common/models.py:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1540 +#: common/models.py:1547 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1548 +#: common/models.py:1555 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "Utiliser le prix fournisseur" -#: common/models.py:1556 +#: 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:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "Remplacer l'historique des achats" -#: common/models.py:1564 +#: 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:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "Utiliser les prix des articles en stock" -#: common/models.py:1572 +#: 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:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "Âge de tarification des articles de stock" -#: common/models.py:1580 +#: 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:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "Utiliser les prix variants" -#: common/models.py:1588 +#: 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:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "Variantes actives uniquement" -#: common/models.py:1595 +#: 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:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "Intervalle de regénération des prix" -#: common/models.py:1603 +#: 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:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "Prix internes" -#: common/models.py:1611 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "Activer les prix internes pour les pièces" -#: common/models.py:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "Substitution du prix interne" -#: common/models.py:1618 +#: 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:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "Activer l'impression d'étiquettes" -#: common/models.py:1625 +#: 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:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "Étiquette image DPI" -#: common/models.py:1632 +#: 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:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "Activer les rapports" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "Activer la génération de rapports" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "Mode Débogage" -#: common/models.py:1645 +#: 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:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: 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:202 msgid "Page Size" msgstr "Taille de la page" -#: common/models.py:1651 +#: 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:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "Activer les rapports de test" -#: common/models.py:1657 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "Activer la génération de rapports de test" -#: common/models.py:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "Joindre des rapports de test" -#: common/models.py:1664 +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "Numéro de Série Universellement Unique" -#: common/models.py:1671 +#: 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:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "Remplir automatiquement les Numéros de Série" -#: common/models.py:1677 +#: 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:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "Supprimer le stock épuisé" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "Détermine le comportement par défaut lorsqu'un article de stock est épuisé" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "Modèle de code de lot" -#: common/models.py:1692 +#: 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:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "Expiration du stock" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "Activer la fonctionnalité d'expiration du stock" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "Vendre le stock expiré" -#: common/models.py:1704 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "Autoriser la vente de stock expiré" -#: common/models.py:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "Délai de péremption du stock" -#: common/models.py:1711 +#: 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:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "Construction de stock expirée" -#: common/models.py:1719 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "Autoriser la construction avec un stock expiré" -#: common/models.py:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "Contrôle de la propriété des stocks" -#: common/models.py:1725 +#: 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:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "Icône par défaut de l'emplacement du stock" -#: common/models.py:1731 +#: 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:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "Afficher les pièces en stock installées" -#: common/models.py:1736 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1741 +#: 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 "Build Order Reference Pattern" msgstr "Modèle de référence de commande de construction" -#: common/models.py:1743 +#: common/models.py:1764 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:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "Activer les retours de commandes" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "Activer la fonctionnalité de retour de commande dans l'interface utilisateur" -#: common/models.py:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "Modèle de référence de retour de commande" -#: common/models.py:1757 +#: common/models.py:1778 msgid "Required pattern for generating Return Order reference field" -msgstr "Modèle requis pour générer le champ de référence du retour de commande" +msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "Modifier les retours de commandes terminées" -#: common/models.py:1765 +#: common/models.py:1786 msgid "Allow editing of return orders after they have been completed" msgstr "Autoriser la modification des retours après leur enregistrement" -#: common/models.py:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "Modèle de référence de bon de commande" -#: common/models.py:1773 +#: common/models.py:1794 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:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "Expédition par défaut du bon de commande" -#: common/models.py:1780 +#: common/models.py:1801 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:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "Modifier les commandes de vente terminées" -#: common/models.py:1787 +#: common/models.py:1808 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:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "Modèle de référence de commande d'achat" -#: common/models.py:1795 +#: common/models.py:1816 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:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "Modifier les bons de commande terminés" -#: common/models.py:1803 +#: common/models.py:1824 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:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1811 +#: common/models.py:1832 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "Activer les mots de passe oubliés" -#: common/models.py:1819 +#: common/models.py:1840 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:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "Activer les inscriptions" -#: common/models.py:1825 +#: common/models.py:1846 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:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "Activer le SSO" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "Activer le SSO sur les pages de connexion" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "Activer l'inscription SSO" -#: common/models.py:1838 +#: common/models.py:1859 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:1844 +#: common/models.py:1865 msgid "Email required" msgstr "Email requis" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "Exiger que l'utilisateur fournisse un mail lors de l'inscription" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "Saisie automatique des utilisateurs SSO" -#: common/models.py:1852 +#: common/models.py:1873 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:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "Courriel en double" -#: common/models.py:1859 +#: common/models.py:1880 msgid "On signup ask users twice for their mail" msgstr "Lors de l'inscription, demandez deux fois aux utilisateurs leur mail" -#: common/models.py:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "Mot de passe deux fois" -#: common/models.py:1865 +#: common/models.py:1886 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:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "Domaines autorisés" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "Grouper sur inscription" -#: common/models.py:1879 +#: common/models.py:1900 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:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "Forcer l'authentification multifacteurs" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "Les utilisateurs doivent utiliser l'authentification multifacteurs." -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "Vérifier les plugins au démarrage" -#: common/models.py:1892 +#: common/models.py:1913 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:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "Activer l'intégration d'URL" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "Autoriser les plugins à ajouter des chemins URL" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "Activer l'intégration de navigation" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "Activer les plugins à s'intégrer dans la navigation" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "Activer l'intégration de plugins" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "Activer l'intégration de plugin pour ajouter des apps" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "Activer l'intégration du planning" -#: common/models.py:1929 +#: common/models.py:1950 msgid "Enable plugins to run scheduled tasks" msgstr "Autoriser les plugins à éxécuter des tâches planifiées" -#: common/models.py:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "Activer l'intégration des évènements" -#: common/models.py:1936 +#: common/models.py:1957 msgid "Enable plugins to respond to internal events" msgstr "Autoriser les plugins à répondre aux évènements internes" -#: common/models.py:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "Activer les codes projet" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "Fonctionnalité d'inventaire" -#: common/models.py:1950 +#: common/models.py:1971 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:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1958 +#: common/models.py:1979 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "Période de l'inventaire automatique" -#: common/models.py:1966 +#: common/models.py:1987 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:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1974 +#: common/models.py:1995 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:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2029 common/models.py:2429 msgid "Settings key (must be unique - case insensitive" msgstr "Clé du paramètre (doit être unique - insensible à la casse)" -#: common/models.py:2043 +#: common/models.py:2070 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2045 +#: common/models.py:2072 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2051 +#: common/models.py:2078 msgid "Show subscribed parts" msgstr "Afficher les composants suivis" -#: common/models.py:2052 +#: common/models.py:2079 msgid "Show subscribed parts on the homepage" msgstr "Afficher les composants suivis sur l'écran d'accueil" -#: common/models.py:2057 +#: common/models.py:2084 msgid "Show subscribed categories" msgstr "Afficher les catégories suivies" -#: common/models.py:2058 +#: common/models.py:2085 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:2063 +#: common/models.py:2090 msgid "Show latest parts" msgstr "Afficher les dernières pièces" -#: common/models.py:2064 +#: common/models.py:2091 msgid "Show latest parts on the homepage" msgstr "Afficher les derniers composants sur la page d'accueil" -#: common/models.py:2069 +#: common/models.py:2096 msgid "Show unvalidated BOMs" msgstr "Afficher les listes de matériaux non validées" -#: common/models.py:2070 +#: common/models.py:2097 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:2075 +#: common/models.py:2102 msgid "Show recent stock changes" msgstr "Afficher les dernières modifications du stock" -#: common/models.py:2076 +#: common/models.py:2103 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:2081 +#: common/models.py:2108 msgid "Show low stock" msgstr "Afficher le stock faible" -#: common/models.py:2082 +#: common/models.py:2109 msgid "Show low stock items on the homepage" msgstr "Afficher les articles en stock bas sur la page d'accueil" -#: common/models.py:2087 +#: common/models.py:2114 msgid "Show depleted stock" msgstr "Afficher le stock épuisé" -#: common/models.py:2088 +#: common/models.py:2115 msgid "Show depleted stock items on the homepage" msgstr "Afficher les stocks épuisés sur la page d'accueil" -#: common/models.py:2093 +#: common/models.py:2120 msgid "Show needed stock" msgstr "Afficher le stock nécessaire" -#: common/models.py:2094 +#: common/models.py:2121 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:2099 +#: common/models.py:2126 msgid "Show expired stock" msgstr "Afficher le stock expiré" -#: common/models.py:2100 +#: common/models.py:2127 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:2105 +#: common/models.py:2132 msgid "Show stale stock" msgstr "Afficher le stock périmé" -#: common/models.py:2106 +#: common/models.py:2133 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:2111 +#: common/models.py:2138 msgid "Show pending builds" msgstr "Afficher les constructions en attente" -#: common/models.py:2112 +#: common/models.py:2139 msgid "Show pending builds on the homepage" msgstr "Afficher les constructions en attente sur la page d'accueil" -#: common/models.py:2117 +#: common/models.py:2144 msgid "Show overdue builds" msgstr "Afficher les constructions en retard" -#: common/models.py:2118 +#: common/models.py:2145 msgid "Show overdue builds on the homepage" msgstr "Afficher les constructions en retard sur la page d'accueil" -#: common/models.py:2123 +#: common/models.py:2150 msgid "Show outstanding POs" msgstr "Afficher les commandes en suspens" -#: common/models.py:2124 +#: common/models.py:2151 msgid "Show outstanding POs on the homepage" msgstr "Afficher les commandes en suspens sur la page d'accueil" -#: common/models.py:2129 +#: common/models.py:2156 msgid "Show overdue POs" msgstr "Afficher les commandes en retard" -#: common/models.py:2130 +#: common/models.py:2157 msgid "Show overdue POs on the homepage" msgstr "Afficher les commandes en retard sur la page d'accueil" -#: common/models.py:2135 +#: common/models.py:2162 msgid "Show outstanding SOs" msgstr "Afficher les envois en suspens" -#: common/models.py:2136 +#: common/models.py:2163 msgid "Show outstanding SOs on the homepage" msgstr "Afficher les envois en suspens sur la page d'accueil" -#: common/models.py:2141 +#: common/models.py:2168 msgid "Show overdue SOs" msgstr "Afficher les envois en retard" -#: common/models.py:2142 +#: common/models.py:2169 msgid "Show overdue SOs on the homepage" msgstr "Afficher les envois en retard sur la page d'accueil" -#: common/models.py:2147 +#: common/models.py:2174 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2148 +#: common/models.py:2175 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2153 +#: common/models.py:2180 msgid "Show News" msgstr "Afficher les nouvelles" -#: common/models.py:2154 +#: common/models.py:2181 msgid "Show news on the homepage" msgstr "Afficher les nouvelles sur la page d'accueil" -#: common/models.py:2159 +#: common/models.py:2186 msgid "Inline label display" msgstr "Affichage du libellé en ligne" -#: common/models.py:2161 +#: common/models.py:2188 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:2167 +#: common/models.py:2194 msgid "Default label printer" msgstr "Imprimante d'étiquettes par défaut" -#: common/models.py:2169 +#: common/models.py:2196 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:2175 +#: common/models.py:2202 msgid "Inline report display" msgstr "Affichage du rapport en ligne" -#: common/models.py:2177 +#: common/models.py:2204 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:2183 +#: common/models.py:2210 msgid "Search Parts" msgstr "Rechercher de pièces" -#: common/models.py:2184 +#: common/models.py:2211 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:2189 +#: common/models.py:2216 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2190 +#: common/models.py:2217 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:2195 +#: common/models.py:2222 msgid "Search Manufacturer Parts" msgstr "Rechercher les pièces du fabricant" -#: common/models.py:2196 +#: common/models.py:2223 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:2201 +#: common/models.py:2228 msgid "Hide Inactive Parts" msgstr "Masquer les pièces inactives" -#: common/models.py:2202 +#: common/models.py:2229 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:2207 +#: common/models.py:2234 msgid "Search Categories" msgstr "Rechercher des catégories" -#: common/models.py:2208 +#: common/models.py:2235 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:2213 +#: common/models.py:2240 msgid "Search Stock" msgstr "Rechercher dans le stock" -#: common/models.py:2214 +#: common/models.py:2241 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:2219 +#: common/models.py:2246 msgid "Hide Unavailable Stock Items" msgstr "Cacher les pièces indisponibles" -#: common/models.py:2221 +#: common/models.py:2248 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:2227 +#: common/models.py:2254 msgid "Search Locations" msgstr "Chercher des Emplacements" -#: common/models.py:2228 +#: common/models.py:2255 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:2233 +#: common/models.py:2260 msgid "Search Companies" msgstr "Rechercher les entreprises" -#: common/models.py:2234 +#: common/models.py:2261 msgid "Display companies in search preview window" msgstr "Afficher les entreprises dans la fenêtre de prévisualisation de recherche" -#: common/models.py:2239 +#: common/models.py:2266 msgid "Search Build Orders" msgstr "Rechercher les commandes de construction" -#: common/models.py:2240 +#: common/models.py:2267 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:2245 +#: common/models.py:2272 msgid "Search Purchase Orders" msgstr "Rechercher des bons de commande" -#: common/models.py:2246 +#: common/models.py:2273 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:2251 +#: common/models.py:2278 msgid "Exclude Inactive Purchase Orders" msgstr "Exclure les bons de commande inactifs" -#: common/models.py:2253 +#: common/models.py:2280 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:2259 +#: common/models.py:2286 msgid "Search Sales Orders" msgstr "Rechercher les bons de commande" -#: common/models.py:2260 +#: common/models.py:2287 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:2265 +#: common/models.py:2292 msgid "Exclude Inactive Sales Orders" msgstr "Exclure les bons de commande inactives" -#: common/models.py:2267 +#: common/models.py:2294 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:2273 +#: common/models.py:2300 msgid "Search Return Orders" msgstr "Rechercher les commandes retournées" -#: common/models.py:2274 +#: common/models.py:2301 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2279 +#: common/models.py:2306 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2281 +#: common/models.py:2308 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2287 +#: common/models.py:2314 msgid "Search Preview Results" msgstr "Résultats de l'aperçu de la recherche" -#: common/models.py:2289 +#: common/models.py:2316 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:2295 +#: common/models.py:2322 msgid "Regex Search" msgstr "Recherche Regex" -#: common/models.py:2296 +#: common/models.py:2323 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2301 +#: common/models.py:2328 msgid "Whole Word Search" msgstr "" -#: common/models.py:2302 +#: common/models.py:2329 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2307 +#: common/models.py:2334 msgid "Show Quantity in Forms" msgstr "Afficher la quantité dans les formulaires" -#: common/models.py:2308 +#: common/models.py:2335 msgid "Display available part quantity in some forms" msgstr "Afficher la quantité disponible dans certains formulaires" -#: common/models.py:2313 +#: common/models.py:2340 msgid "Escape Key Closes Forms" msgstr "La touche Echap ferme les formulaires" -#: common/models.py:2314 +#: common/models.py:2341 msgid "Use the escape key to close modal forms" msgstr "Utilisez la touche Echap pour fermer les formulaires modaux" -#: common/models.py:2319 +#: common/models.py:2346 msgid "Fixed Navbar" msgstr "Barre de navigation fixe" -#: common/models.py:2320 +#: common/models.py:2347 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:2325 +#: common/models.py:2352 msgid "Date Format" msgstr "Format de date" -#: common/models.py:2326 +#: common/models.py:2353 msgid "Preferred format for displaying dates" msgstr "Format préféré pour l'affichage des dates" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2366 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Planification des pièces" -#: common/models.py:2340 +#: common/models.py:2367 msgid "Display part scheduling information" msgstr "Afficher les informations de planification des pièces" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2372 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Inventaire des pièces" -#: common/models.py:2347 +#: common/models.py:2374 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2353 +#: common/models.py:2380 msgid "Table String Length" msgstr "Longueur de la chaîne dans les Tableau" -#: common/models.py:2355 +#: common/models.py:2382 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2361 +#: common/models.py:2388 msgid "Default part label template" msgstr "" -#: common/models.py:2362 +#: common/models.py:2389 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2367 +#: common/models.py:2394 msgid "Default stock item template" msgstr "" -#: common/models.py:2369 +#: common/models.py:2396 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2375 +#: common/models.py:2402 msgid "Default stock location label template" msgstr "" -#: common/models.py:2377 +#: common/models.py:2404 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2383 +#: common/models.py:2410 msgid "Receive error reports" msgstr "" -#: common/models.py:2384 +#: common/models.py:2411 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2389 +#: common/models.py:2416 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2417 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2460 msgid "Price break quantity" msgstr "" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3503,23 +3536,23 @@ msgstr "" msgid "Price" msgstr "Prix" -#: common/models.py:2441 +#: common/models.py:2468 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2639 common/models.py:2824 msgid "Endpoint" msgstr "" -#: common/models.py:2613 +#: common/models.py:2640 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2623 +#: common/models.py:2650 msgid "Name for this webhook" msgstr "" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3529,101 +3562,101 @@ msgstr "" msgid "Active" msgstr "Actif" -#: common/models.py:2627 +#: common/models.py:2654 msgid "Is this webhook active" msgstr "Ce webhook (lien de rappel HTTP) est-il actif" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2670 users/models.py:148 msgid "Token" msgstr "Jeton" -#: common/models.py:2644 +#: common/models.py:2671 msgid "Token for access" msgstr "Jeton d'accès" -#: common/models.py:2652 +#: common/models.py:2679 msgid "Secret" msgstr "Confidentiel" -#: common/models.py:2653 +#: common/models.py:2680 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2761 +#: common/models.py:2788 msgid "Message ID" msgstr "ID message" -#: common/models.py:2762 +#: common/models.py:2789 msgid "Unique identifier for this message" msgstr "Identifiant unique pour ce message" -#: common/models.py:2770 +#: common/models.py:2797 msgid "Host" msgstr "Hôte" -#: common/models.py:2771 +#: common/models.py:2798 msgid "Host from which this message was received" msgstr "Hôte à partir duquel ce message a été reçu" -#: common/models.py:2779 +#: common/models.py:2806 msgid "Header" msgstr "Entête" -#: common/models.py:2780 +#: common/models.py:2807 msgid "Header of this message" msgstr "En-tête de ce message" -#: common/models.py:2787 +#: common/models.py:2814 msgid "Body" msgstr "Corps" -#: common/models.py:2788 +#: common/models.py:2815 msgid "Body of this message" msgstr "Corps de ce message" -#: common/models.py:2798 +#: common/models.py:2825 msgid "Endpoint on which this message was received" msgstr "Endpoint à partir duquel ce message a été reçu" -#: common/models.py:2803 +#: common/models.py:2830 msgid "Worked on" msgstr "" -#: common/models.py:2804 +#: common/models.py:2831 msgid "Was the work on this message finished?" msgstr "Le travail sur ce message est-il terminé ?" -#: common/models.py:2930 +#: common/models.py:2957 msgid "Id" msgstr "Id" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2959 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "Titre" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2963 templates/js/translated/news.js:60 msgid "Published" msgstr "Publié" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2965 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2967 templates/js/translated/news.js:52 msgid "Summary" msgstr "Résumé" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Read" msgstr "Lu" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Was this news item read?" msgstr "Cette nouvelle a-t-elle été lue ?" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2987 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3633,31 +3666,31 @@ msgstr "Cette nouvelle a-t-elle été lue ?" msgid "Image" msgstr "Image" -#: common/models.py:2960 +#: common/models.py:2987 msgid "Image file" msgstr "" -#: common/models.py:3002 +#: common/models.py:3029 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3021 +#: common/models.py:3048 msgid "Unit name" msgstr "" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3029 +#: common/models.py:3056 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "Définition" -#: common/models.py:3037 +#: common/models.py:3064 msgid "Unit definition" msgstr "" @@ -3961,7 +3994,7 @@ msgid "Link to address information (external)" msgstr "" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" @@ -3972,7 +4005,7 @@ msgstr "" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3987,7 +4020,7 @@ msgid "Select manufacturer" msgstr "Sélectionner un fabricant" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4022,9 +4055,9 @@ msgstr "Nom du paramètre" #: company/models.py:615 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2438 templates/js/translated/company.js:1156 +#: stock/models.py:2441 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1519 msgid "Value" msgstr "Valeur" @@ -4033,7 +4066,7 @@ msgid "Parameter value" msgstr "Valeur du paramètre" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4059,7 +4092,7 @@ msgstr "La pièce du fabricant liée doit faire référence à la même pièce d #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4076,7 +4109,7 @@ msgstr "Fournisseur" msgid "Select supplier" msgstr "Sélectionner un fournisseur" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "Unité de gestion des stocks des fournisseurs" @@ -4093,13 +4126,13 @@ msgid "Supplier part description" msgstr "Description de la pièce du fournisseur" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:579 msgid "Note" msgstr "Note" @@ -4112,10 +4145,10 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "Frais minimums (par exemple frais de stock)" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 -#: templates/js/translated/stock.js:2387 +#: templates/js/translated/stock.js:2423 msgid "Packaging" msgstr "Conditionnement" @@ -4157,7 +4190,7 @@ msgstr "Disponibilité mise à jour" msgid "Date of last update of availability data" msgstr "Date de dernière mise à jour des données de disponibilité" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "Devise par défaut utilisée pour ce fournisseur" @@ -4218,13 +4251,13 @@ msgstr "Supprimer image" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1100 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 #: templates/js/translated/return_order.js:296 #: templates/js/translated/sales_order.js:784 -#: templates/js/translated/stock.js:2923 +#: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:804 msgid "Customer" msgstr "Client" @@ -4429,8 +4462,9 @@ 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/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "Fournisseurs" @@ -4482,7 +4516,7 @@ msgstr "Adresses" #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2243 +#: templates/js/translated/stock.js:2279 msgid "Supplier Part" msgstr "Pièce fournisseur" @@ -4528,7 +4562,7 @@ 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:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4577,15 +4611,17 @@ msgstr "" msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 -#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:193 msgid "Stock Items" msgstr "Éléments en stock" @@ -4639,8 +4675,8 @@ msgstr "Étiquette" msgid "Label template file" msgstr "Fichier de modèle d'étiquette" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "Activé" @@ -4665,7 +4701,7 @@ msgstr "Hauteur [mm]" msgid "Label height, specified in mm" msgstr "Hauteur de l'étiquette, spécifiée en mm" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "Modèle de nom de fichier" @@ -4679,8 +4715,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "Filtres" @@ -4821,7 +4857,7 @@ msgstr "Aucun bon de commande correspondant n'a été trouvé" #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1674 -#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "Commande d’achat" @@ -4830,7 +4866,7 @@ msgstr "Commande d’achat" #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 -#: templates/js/translated/stock.js:2905 +#: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "Retour de commande" @@ -4838,11 +4874,11 @@ msgstr "Retour de commande" msgid "Total price for this order" msgstr "Prix total pour cette commande" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "Devise de la commande" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -5029,9 +5065,9 @@ msgstr "Reçu" msgid "Number of items received" msgstr "Nombre d'éléments reçus" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2274 +#: templates/js/translated/stock.js:2310 msgid "Purchase Price" msgstr "Prix d'achat" @@ -5084,8 +5120,8 @@ msgstr "Vérifié par" msgid "User who checked this shipment" msgstr "Utilisateur qui a vérifié cet envoi" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "Envoi" @@ -5133,7 +5169,7 @@ msgstr "Impossible d'allouer le stock à une ligne sans pièce" msgid "Allocation quantity cannot exceed stock quantity" msgstr "La quantité d'allocation ne peut pas excéder la quantité en stock" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "" @@ -5207,159 +5243,159 @@ msgstr "" msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "La commande ne peut pas être annulée" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "La commande n'est pas ouverte" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "Devise du prix d'achat" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 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:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Code-barres" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "Le code-barres est déjà utilisé" -#: order/serializers.py:610 +#: order/serializers.py:632 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:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "Entrez les numéros de série à allouer" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1383 +#: order/serializers.py:1405 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:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "Les numéros de série suivants sont déjà alloués" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1677 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "" @@ -5733,7 +5769,7 @@ msgid "Pending Shipments" msgstr "Expéditions en attente" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" @@ -5763,12 +5799,12 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "ID de composant" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "Nom de l'article" @@ -5780,12 +5816,12 @@ msgstr "" #: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 -#: templates/js/translated/stock.js:1999 +#: templates/js/translated/stock.js:2035 msgid "IPN" msgstr "IPN" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "Révision" @@ -5861,10 +5897,10 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -5885,17 +5921,17 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3897 msgid "Part IPN" msgstr "" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "Prix Minimum" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5973,8 +6009,8 @@ msgstr "" msgid "This option must be selected" msgstr "" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5982,12 +6018,17 @@ msgstr "" msgid "Category" msgstr "Catégorie" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5995,7 +6036,7 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Catégorie de composant" @@ -6010,7 +6051,8 @@ msgstr "Catégories de composants" msgid "Default location for parts in this category" msgstr "" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 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" @@ -6076,7 +6118,7 @@ msgstr "" msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3896 msgid "Part name" msgstr "Nom de l'article" @@ -6358,7 +6400,7 @@ msgstr "" #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1732 -#: templates/js/translated/stock.js:2785 +#: templates/js/translated/stock.js:2821 msgid "Date" msgstr "Date" @@ -6410,586 +6452,602 @@ msgstr "" msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3448 -msgid "Test with this name already exists for this part" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "Nom de test" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Requis" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "Valeur requise" -#: part/models.py:3496 +#: part/models.py:3505 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "" -#: part/models.py:3503 +#: part/models.py:3512 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "Données" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "Valeur par Défaut" -#: part/models.py:3847 +#: part/models.py:3856 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3885 +#: part/models.py:3894 msgid "Part ID or part name" msgstr "" -#: part/models.py:3886 +#: part/models.py:3895 msgid "Unique part ID value" msgstr "" -#: part/models.py:3888 +#: part/models.py:3897 msgid "Part IPN value" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "Level" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "BOM level" msgstr "" -#: part/models.py:3979 +#: part/models.py:3988 msgid "Select parent part" msgstr "" -#: part/models.py:3989 +#: part/models.py:3998 msgid "Sub part" msgstr "" -#: part/models.py:3990 +#: part/models.py:3999 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4001 +#: part/models.py:4010 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4007 +#: part/models.py:4016 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4013 +#: part/models.py:4022 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4029 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Surplus" -#: part/models.py:4021 +#: part/models.py:4030 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4028 +#: part/models.py:4037 msgid "BOM item reference" msgstr "" -#: part/models.py:4036 +#: part/models.py:4045 msgid "BOM item notes" msgstr "" -#: part/models.py:4042 +#: part/models.py:4051 msgid "Checksum" msgstr "" -#: part/models.py:4043 +#: part/models.py:4052 msgid "BOM line checksum" msgstr "" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4057 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "Validée" -#: part/models.py:4049 +#: part/models.py:4058 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4063 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:4055 +#: part/models.py:4064 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4069 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4061 +#: part/models.py:4070 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4146 stock/models.py:649 +#: part/models.py:4155 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4165 part/models.py:4167 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4298 +#: part/models.py:4307 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4319 +#: part/models.py:4328 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4332 +#: part/models.py:4341 msgid "Parent BOM item" msgstr "" -#: part/models.py:4340 +#: part/models.py:4349 msgid "Substitute part" msgstr "" -#: part/models.py:4356 +#: part/models.py:4365 msgid "Part 1" msgstr "" -#: part/models.py:4364 +#: part/models.py:4373 msgid "Part 2" msgstr "" -#: part/models.py:4365 +#: part/models.py:4374 msgid "Select Related Part" msgstr "" -#: part/models.py:4384 +#: part/models.py:4393 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4389 +#: part/models.py:4398 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 msgid "Purchase currency of this stock item" msgstr "Devise d'achat de l'item" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "Copier l'image" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:432 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "Copier les paramètres" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:480 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1104 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1078 +#: part/serializers.py:1114 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1088 +#: part/serializers.py:1124 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1647 +#: part/serializers.py:1693 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1659 +#: part/serializers.py:1705 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1694 +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "" @@ -7147,7 +7205,7 @@ msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/stock.js:2179 users/models.py:191 +#: templates/js/translated/stock.js:2215 users/models.py:191 msgid "Stocktake" msgstr "Prise d'inventaire" @@ -7221,7 +7279,7 @@ msgid "Validate BOM" msgstr "" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "" @@ -7405,7 +7463,7 @@ msgstr "" msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "" @@ -7509,7 +7567,7 @@ msgstr "" #: templates/InvenTree/settings/sidebar.html:51 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 -#: templates/js/translated/stock.js:2033 templates/navbar.html:31 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 msgid "Stock" msgstr "Stock" @@ -7555,7 +7613,7 @@ msgstr "Modifier" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 -#: templates/js/translated/stock.js:2209 +#: templates/js/translated/stock.js:2245 msgid "Last Updated" msgstr "" @@ -7999,7 +8057,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "" @@ -8307,16 +8365,16 @@ msgstr "" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "Aucun objet valide n'a été fourni au modèle" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "" @@ -8336,103 +8394,111 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "Nom du modèle" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "Filtres de composants" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" msgstr "Extrait " -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" msgstr "Elément" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8499,12 +8565,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1492 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Result" msgstr "Résultat" @@ -8531,7 +8597,7 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:168 #: stock/admin.py:162 templates/js/translated/stock.js:700 -#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110 msgid "Serial" msgstr "Numéro de série" @@ -8615,7 +8681,7 @@ msgstr "" #: stock/admin.py:256 stock/models.py:886 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2193 users/models.py:113 +#: templates/js/translated/stock.js:2229 users/models.py:113 msgid "Expiry Date" msgstr "" @@ -8713,7 +8779,7 @@ msgstr "Sélectionner un propriétaire" msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:174 templates/js/translated/stock.js:2745 +#: stock/models.py:174 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" @@ -8722,7 +8788,7 @@ msgstr "" msgid "This is an external stock location" msgstr "" -#: stock/models.py:181 templates/js/translated/stock.js:2754 +#: stock/models.py:181 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" @@ -8739,7 +8805,7 @@ msgstr "" msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:290 msgid "Stock item cannot be created for virtual parts" msgstr "" @@ -8784,7 +8850,7 @@ msgstr "" msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1351 msgid "Packaging this stock item is stored in" msgstr "" @@ -8796,7 +8862,7 @@ msgstr "" msgid "Serial number for this item" msgstr "Numéro de série pour cet article" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1334 msgid "Batch code for this stock item" msgstr "" @@ -8873,7 +8939,7 @@ msgstr "Les numéros de série doivent être une liste de nombres entiers" msgid "Quantity does not match serial numbers" msgstr "La quantité ne correspond pas au nombre de numéros de série" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:529 msgid "Serial numbers already exist" msgstr "Les numéros de série existent déjà" @@ -8905,7 +8971,7 @@ msgstr "" msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1240 msgid "Duplicate stock items" msgstr "" @@ -8929,207 +8995,236 @@ msgstr "" msgid "Entry notes" msgstr "" -#: stock/models.py:2399 +#: stock/models.py:2402 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2405 +#: stock/models.py:2408 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Test result" msgstr "" -#: stock/models.py:2439 +#: stock/models.py:2442 msgid "Test output value" msgstr "" -#: stock/models.py:2447 +#: stock/models.py:2450 msgid "Test result attachment" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2454 msgid "Test notes" msgstr "" -#: stock/serializers.py:96 +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "" + +#: stock/models.py:2463 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2469 +msgid "Started" +msgstr "" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:100 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:119 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 +#: stock/serializers.py:151 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:184 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:267 +#: stock/serializers.py:282 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:380 +#: stock/serializers.py:402 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:442 +#: stock/serializers.py:464 msgid "Enter number of stock items to serialize" msgstr "Entrez le nombre d'articles en stock à sérialiser" -#: stock/serializers.py:455 +#: stock/serializers.py:477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:462 +#: stock/serializers.py:484 msgid "Enter serial numbers for new items" msgstr "Entrez les numéros de série pour les nouveaux articles" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:480 +#: stock/serializers.py:502 msgid "Optional note field" msgstr "" -#: stock/serializers.py:490 +#: stock/serializers.py:512 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:545 +#: stock/serializers.py:567 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:574 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:553 +#: stock/serializers.py:575 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:566 +#: stock/serializers.py:588 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:596 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:581 +#: stock/serializers.py:607 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:620 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:628 +#: stock/serializers.py:655 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:663 +#: stock/serializers.py:690 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:676 +#: stock/serializers.py:703 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:693 +#: stock/serializers.py:720 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:724 +#: stock/serializers.py:751 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:761 +#: stock/serializers.py:788 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:767 +#: stock/serializers.py:794 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1036 +#: stock/serializers.py:1069 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1040 +#: stock/serializers.py:1073 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1044 +#: stock/serializers.py:1077 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1068 +#: stock/serializers.py:1101 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1074 +#: stock/serializers.py:1107 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1082 +#: stock/serializers.py:1115 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1125 stock/serializers.py:1379 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1171 +#: stock/serializers.py:1204 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1176 +#: stock/serializers.py:1209 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1177 +#: stock/serializers.py:1210 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1182 +#: stock/serializers.py:1215 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1183 +#: stock/serializers.py:1216 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1193 +#: stock/serializers.py:1226 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1260 +#: stock/serializers.py:1293 msgid "No Change" msgstr "" -#: stock/serializers.py:1289 +#: stock/serializers.py:1322 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1308 +#: stock/serializers.py:1341 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1336 +#: stock/serializers.py:1369 msgid "Stock transaction notes" msgstr "" @@ -9154,7 +9249,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 msgid "Delete Test Data" msgstr "" @@ -9170,15 +9265,15 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:274 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 msgid "Add Test Result" msgstr "" @@ -9201,17 +9296,17 @@ msgid "Stock adjustment actions" msgstr "" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 msgid "Count stock" msgstr "" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:1803 msgid "Add stock" msgstr "" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1776 +#: templates/js/translated/stock.js:1812 msgid "Remove stock" msgstr "" @@ -9220,12 +9315,12 @@ msgid "Serialize stock" msgstr "" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 msgid "Transfer stock" msgstr "" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1884 msgid "Assign to customer" msgstr "" @@ -9364,7 +9459,7 @@ msgid "No stocktake performed" msgstr "" #: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1915 +#: templates/js/translated/stock.js:1951 msgid "stock item" msgstr "" @@ -9469,7 +9564,7 @@ msgid "New Location" msgstr "" #: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2536 +#: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" @@ -10063,7 +10158,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:37 msgid "New Location Type" msgstr "" @@ -10120,7 +10215,7 @@ msgstr "" msgid "Stock Settings" msgstr "" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:33 msgid "Stock Location Types" msgstr "" @@ -10662,7 +10757,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "Quantité requise" @@ -10676,7 +10771,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "" @@ -11051,62 +11146,66 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "" @@ -11389,7 +11488,7 @@ msgstr "" #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 -#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11401,7 +11500,7 @@ msgstr "" msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006 +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" @@ -11449,29 +11548,29 @@ msgstr "" msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "" @@ -11804,15 +11903,15 @@ msgstr "" msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3087 +#: templates/js/translated/forms.js:3103 msgid "Select Columns" msgstr "" @@ -12289,7 +12388,7 @@ msgid "No category" msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 -#: templates/js/translated/stock.js:2633 +#: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" @@ -12301,7 +12400,7 @@ msgstr "" msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" @@ -12313,64 +12412,64 @@ msgstr "" msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" @@ -12907,7 +13006,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1737 +#: templates/js/translated/stock.js:1773 msgid "Shipped to customer" msgstr "" @@ -13165,7 +13264,7 @@ msgstr "" msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" @@ -13189,248 +13288,256 @@ msgstr "" msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1440 +#: templates/js/translated/stock.js:1447 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1443 +#: templates/js/translated/stock.js:1450 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1466 +#: templates/js/translated/stock.js:1473 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1530 +#: templates/js/translated/stock.js:1537 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1677 +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1733 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1729 +#: templates/js/translated/stock.js:1765 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1769 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1741 +#: templates/js/translated/stock.js:1777 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1747 +#: templates/js/translated/stock.js:1783 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1839 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1848 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:1897 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1916 +#: templates/js/translated/stock.js:1952 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1921 +#: templates/js/translated/stock.js:1957 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1932 +#: templates/js/translated/stock.js:1968 msgid "Stock Actions" msgstr "" -#: templates/js/translated/stock.js:1976 +#: templates/js/translated/stock.js:2012 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2054 +#: templates/js/translated/stock.js:2090 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2059 +#: templates/js/translated/stock.js:2095 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2062 +#: templates/js/translated/stock.js:2098 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2065 +#: templates/js/translated/stock.js:2101 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2067 +#: templates/js/translated/stock.js:2103 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2069 +#: templates/js/translated/stock.js:2105 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2072 +#: templates/js/translated/stock.js:2108 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2074 +#: templates/js/translated/stock.js:2110 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2114 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2080 +#: templates/js/translated/stock.js:2116 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2085 +#: templates/js/translated/stock.js:2121 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2087 +#: templates/js/translated/stock.js:2123 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2089 +#: templates/js/translated/stock.js:2125 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2129 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2258 +#: templates/js/translated/stock.js:2294 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2305 +#: templates/js/translated/stock.js:2341 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2433 +#: templates/js/translated/stock.js:2469 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2573 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2692 +#: templates/js/translated/stock.js:2728 msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2810 +#: templates/js/translated/stock.js:2846 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2814 +#: templates/js/translated/stock.js:2850 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:2862 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2848 +#: templates/js/translated/stock.js:2884 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2865 +#: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2880 +#: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2897 +#: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2914 +#: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3005 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2977 +#: templates/js/translated/stock.js:3013 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:3049 +#: templates/js/translated/stock.js:3085 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139 +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:3161 +#: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:3182 +#: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:3183 +#: 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:3185 +#: 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:3186 +#: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:3187 +#: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:3188 +#: 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:3201 +#: templates/js/translated/stock.js:3237 msgid "Select part to install" msgstr "" -#: templates/js/translated/stock.js:3264 +#: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" msgstr "" -#: templates/js/translated/stock.js:3277 +#: templates/js/translated/stock.js:3313 msgid "Selected stock items" msgstr "" -#: templates/js/translated/stock.js:3281 +#: templates/js/translated/stock.js:3317 msgid "Change Stock Status" msgstr "" diff --git a/InvenTree/locale/he/LC_MESSAGES/django.po b/InvenTree/locale/he/LC_MESSAGES/django.po index 4de37ba244..4942190281 100644 --- a/InvenTree/locale/he/LC_MESSAGES/django.po +++ b/InvenTree/locale/he/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 04:05+0000\n" -"PO-Revision-Date: 2024-02-28 07:23\n" +"POT-Creation-Date: 2024-03-19 01:26+0000\n" +"PO-Revision-Date: 2024-03-19 11:51\n" "Last-Translator: \n" "Language-Team: Hebrew\n" "Language: he_IL\n" @@ -30,20 +30,20 @@ msgstr "" msgid "Invalid unit provided ({unit})" msgstr "" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" msgstr "" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" msgstr "" @@ -64,18 +64,18 @@ msgstr "הזן תאריך סיום" #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 #: templates/js/translated/return_order.js:776 #: templates/js/translated/sales_order.js:1067 #: templates/js/translated/sales_order.js:1982 -#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 msgid "Notes" msgstr "" @@ -132,42 +132,42 @@ msgstr "" msgid "Registration is disabled." msgstr "" -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "מספרים סידוריים לא נמצאו" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "" @@ -203,131 +203,135 @@ msgstr "" msgid "Supplied URL is not a valid image file" msgstr "" -#: InvenTree/locales.py:16 +#: InvenTree/locales.py:18 msgid "Bulgarian" msgstr "" -#: InvenTree/locales.py:17 +#: InvenTree/locales.py:19 msgid "Czech" msgstr "" -#: InvenTree/locales.py:18 +#: InvenTree/locales.py:20 msgid "Danish" msgstr "" -#: InvenTree/locales.py:19 +#: InvenTree/locales.py:21 msgid "German" msgstr "גרמנית" -#: InvenTree/locales.py:20 +#: InvenTree/locales.py:22 msgid "Greek" msgstr "יוונית" -#: InvenTree/locales.py:21 +#: InvenTree/locales.py:23 msgid "English" msgstr "אנגלית" -#: InvenTree/locales.py:22 +#: InvenTree/locales.py:24 msgid "Spanish" msgstr "ספרדית" -#: InvenTree/locales.py:23 +#: InvenTree/locales.py:25 msgid "Spanish (Mexican)" msgstr "ספרדית (מקסיקנית)" -#: InvenTree/locales.py:24 +#: InvenTree/locales.py:26 msgid "Farsi / Persian" msgstr "" -#: InvenTree/locales.py:25 +#: InvenTree/locales.py:27 msgid "Finnish" msgstr "" -#: InvenTree/locales.py:26 +#: InvenTree/locales.py:28 msgid "French" msgstr "צרפתית" -#: InvenTree/locales.py:27 +#: InvenTree/locales.py:29 msgid "Hebrew" msgstr "עברית" -#: InvenTree/locales.py:28 +#: InvenTree/locales.py:30 msgid "Hindi" msgstr "" -#: InvenTree/locales.py:29 +#: InvenTree/locales.py:31 msgid "Hungarian" msgstr "" -#: InvenTree/locales.py:30 +#: InvenTree/locales.py:32 msgid "Italian" msgstr "איטלקית" -#: InvenTree/locales.py:31 +#: InvenTree/locales.py:33 msgid "Japanese" msgstr "יפנית" -#: InvenTree/locales.py:32 +#: InvenTree/locales.py:34 msgid "Korean" msgstr "קוריאנית" -#: InvenTree/locales.py:33 +#: InvenTree/locales.py:35 +msgid "Latvian" +msgstr "" + +#: InvenTree/locales.py:36 msgid "Dutch" msgstr "הולנדית" -#: InvenTree/locales.py:34 +#: InvenTree/locales.py:37 msgid "Norwegian" msgstr "נורווגית" -#: InvenTree/locales.py:35 +#: InvenTree/locales.py:38 msgid "Polish" msgstr "פולנית" -#: InvenTree/locales.py:36 +#: InvenTree/locales.py:39 msgid "Portuguese" msgstr "" -#: InvenTree/locales.py:37 +#: InvenTree/locales.py:40 msgid "Portuguese (Brazilian)" msgstr "" -#: InvenTree/locales.py:38 +#: InvenTree/locales.py:41 msgid "Russian" msgstr "רוסית" -#: InvenTree/locales.py:39 +#: InvenTree/locales.py:42 msgid "Slovak" msgstr "" -#: InvenTree/locales.py:40 +#: InvenTree/locales.py:43 msgid "Slovenian" msgstr "" -#: InvenTree/locales.py:41 +#: InvenTree/locales.py:44 msgid "Serbian" msgstr "" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:45 msgid "Swedish" msgstr "שוודית" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:46 msgid "Thai" msgstr "תאילנדית" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:47 msgid "Turkish" msgstr "טורקית" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:48 msgid "Vietnamese" msgstr "ווייטנאמית" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:49 msgid "Chinese (Simplified)" msgstr "" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:50 msgid "Chinese (Traditional)" msgstr "" @@ -391,7 +395,7 @@ msgstr "קובץ חסר" msgid "Missing external link" msgstr "חסר קישור חיצוני" -#: InvenTree/models.py:559 stock/models.py:2446 +#: InvenTree/models.py:559 stock/models.py:2449 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -401,7 +405,7 @@ msgstr "קובץ מצורף" msgid "Select file to attach" msgstr "בחר קובץ לצירוף" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -432,13 +436,13 @@ msgstr "הערה" msgid "File comment" msgstr "הערת קובץ" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:3000 users/models.py:100 +#: templates/js/translated/stock.js:3036 users/models.py:100 msgid "User" msgstr "משתמש" @@ -479,10 +483,10 @@ msgstr "" msgid "Invalid choice" msgstr "בחירה שגויה" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -495,7 +499,7 @@ msgstr "בחירה שגויה" #: templates/js/translated/company.js:1155 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "שם" @@ -506,10 +510,10 @@ msgstr "שם" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -523,7 +527,7 @@ msgstr "שם" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -531,8 +535,8 @@ msgstr "שם" #: templates/js/translated/return_order.js:314 #: templates/js/translated/sales_order.js:802 #: templates/js/translated/sales_order.js:1812 -#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021 -#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "תיאור" @@ -545,7 +549,7 @@ msgid "parent" msgstr "מקור" #: InvenTree/models.py:916 templates/js/translated/part.js:2794 -#: templates/js/translated/stock.js:2721 +#: templates/js/translated/stock.js:2757 msgid "Path" msgstr "" @@ -581,7 +585,7 @@ msgstr "" msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:62 part/models.py:4134 +#: InvenTree/serializers.py:62 part/models.py:4143 msgid "Must be a valid number" msgstr "המספר חייב להיות תקין" @@ -596,89 +600,89 @@ msgstr "" msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:436 +#: InvenTree/serializers.py:441 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:448 +#: InvenTree/serializers.py:453 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:467 +#: InvenTree/serializers.py:472 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:469 +#: InvenTree/serializers.py:474 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:476 +#: InvenTree/serializers.py:481 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:537 +#: InvenTree/serializers.py:542 msgid "Filename" msgstr "שם קובץ" -#: InvenTree/serializers.py:571 +#: InvenTree/serializers.py:576 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:591 +#: InvenTree/serializers.py:596 msgid "Data File" msgstr "" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:597 msgid "Select data file for upload" msgstr "" -#: InvenTree/serializers.py:609 +#: InvenTree/serializers.py:614 msgid "Unsupported file type" msgstr "" -#: InvenTree/serializers.py:615 +#: InvenTree/serializers.py:620 msgid "File is too large" msgstr "" -#: InvenTree/serializers.py:636 +#: InvenTree/serializers.py:641 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:639 +#: InvenTree/serializers.py:644 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:752 +#: InvenTree/serializers.py:757 msgid "No data rows provided" msgstr "" -#: InvenTree/serializers.py:755 +#: InvenTree/serializers.py:760 msgid "No data columns supplied" msgstr "" -#: InvenTree/serializers.py:822 +#: InvenTree/serializers.py:827 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "" -#: InvenTree/serializers.py:831 +#: InvenTree/serializers.py:836 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:859 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:855 +#: InvenTree/serializers.py:860 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:873 +#: InvenTree/serializers.py:878 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/status.py:66 part/serializers.py:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "" @@ -818,7 +822,7 @@ msgstr "" msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 msgid "Merged stock items" msgstr "" @@ -838,7 +842,7 @@ msgstr "" msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 msgid "Consumed by build order" msgstr "" @@ -938,14 +942,14 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -960,7 +964,7 @@ msgid "Tracked" msgstr "" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -985,7 +989,7 @@ msgstr "" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "" @@ -1014,7 +1018,7 @@ msgstr "" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1044,11 +1048,11 @@ msgstr "" #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1059,7 +1063,7 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:267 stock/serializers.py:689 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1086,9 +1090,9 @@ msgstr "" #: templates/js/translated/sales_order.js:1598 #: templates/js/translated/sales_order.js:1796 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960 -#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054 -#: templates/js/translated/stock.js:3200 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 msgid "Part" msgstr "רכיב" @@ -1146,8 +1150,8 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" @@ -1242,53 +1246,53 @@ msgstr "" msgid "Project code for this build order" msgstr "" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "" -#: build/models.py:789 +#: build/models.py:805 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" msgstr "" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1298,7 +1302,7 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:463 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1310,7 +1314,7 @@ msgstr "" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1325,43 +1329,43 @@ msgstr "" #: templates/js/translated/sales_order.js:1698 #: templates/js/translated/sales_order.js:1824 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 -#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985 -#: templates/js/translated/stock.js:3068 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "כמות" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1381 +#: build/models.py:1397 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1390 +#: build/models.py:1406 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1473 +#: build/models.py:1489 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 @@ -1372,23 +1376,23 @@ msgstr "" #: templates/js/translated/sales_order.js:1605 #: templates/js/translated/sales_order.js:1692 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 -#: templates/js/translated/stock.js:2941 +#: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "" @@ -1425,8 +1429,8 @@ msgstr "" msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "מספרים סידוריים" @@ -1451,10 +1455,10 @@ msgstr "" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1466,8 +1470,8 @@ msgstr "" #: templates/js/translated/sales_order.js:1627 #: templates/js/translated/sales_order.js:1706 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164 -#: templates/js/translated/stock.js:2835 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 msgid "Location" msgstr "" @@ -1493,16 +1497,16 @@ msgstr "" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 #: templates/js/translated/purchase_order.js:1723 #: templates/js/translated/return_order.js:331 #: templates/js/translated/sales_order.js:819 -#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959 -#: templates/js/translated/stock.js:3084 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 msgid "Status" msgstr "" @@ -1566,7 +1570,7 @@ msgstr "" msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "" @@ -1602,11 +1606,11 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1065 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" @@ -1619,7 +1623,7 @@ msgstr "" msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "" @@ -1659,44 +1663,45 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 #: stock/api.py:745 msgid "BOM Item" msgstr "" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1862,7 +1867,7 @@ msgstr "" #: templates/js/translated/pricing.js:929 #: templates/js/translated/sales_order.js:769 #: templates/js/translated/sales_order.js:992 -#: templates/js/translated/stock.js:2888 +#: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "" @@ -1920,8 +1925,8 @@ msgstr "" #: templates/js/translated/build.js:1377 #: templates/js/translated/model_renderers.js:235 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153 -#: templates/js/translated/stock.js:3091 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" @@ -1990,27 +1995,31 @@ msgstr "" msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:210 -msgid "Incomplete Build Outputs" -msgstr "" - -#: build/templates/build/detail.html:214 -msgid "Create new build output" +#: 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:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2026,15 +2035,15 @@ msgstr "" msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" msgstr "" @@ -2112,1390 +2121,1414 @@ msgstr "" msgid "User or group responsible for this project" msgstr "" -#: common/models.py:737 +#: common/models.py:744 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:741 +#: common/models.py:748 msgid "Settings value" msgstr "" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "" -#: common/models.py:1231 +#: common/models.py:1238 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1283 +#: common/models.py:1290 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "" -#: common/models.py:1298 +#: common/models.py:1305 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "" -#: common/models.py:1305 +#: common/models.py:1312 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "" -#: common/models.py:1332 +#: common/models.py:1339 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "" -#: common/models.py:1339 +#: common/models.py:1346 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "" -#: common/models.py:1346 +#: common/models.py:1353 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1352 +#: common/models.py:1359 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1360 +#: common/models.py:1367 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1369 +#: common/models.py:1376 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1378 +#: common/models.py:1385 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1386 +#: common/models.py:1393 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1399 +#: common/models.py:1406 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "" -#: common/models.py:1411 +#: common/models.py:1418 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1415 +#: common/models.py:1422 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1421 +#: common/models.py:1428 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1427 +#: common/models.py:1434 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1433 +#: common/models.py:1440 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1439 +#: common/models.py:1446 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1505 +#: common/models.py:1512 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1512 +#: common/models.py:1519 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "" -#: common/models.py:1525 +#: common/models.py:1532 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1526 +#: common/models.py:1533 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1530 +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1532 +#: common/models.py:1539 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1540 +#: common/models.py:1547 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1548 +#: common/models.py:1555 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1564 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1580 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1588 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1595 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1603 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1611 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1618 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1632 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1645 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: 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:202 msgid "Page Size" msgstr "" -#: common/models.py:1651 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1657 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1664 +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1671 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1677 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1692 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1704 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1711 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1719 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1725 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1731 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1736 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1741 +#: 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 "Build Order Reference Pattern" msgstr "" -#: common/models.py:1743 +#: common/models.py:1764 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1757 +#: common/models.py:1778 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1765 +#: common/models.py:1786 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1773 +#: common/models.py:1794 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1780 +#: common/models.py:1801 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1787 +#: common/models.py:1808 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1795 +#: common/models.py:1816 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1803 +#: common/models.py:1824 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1811 +#: common/models.py:1832 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "" -#: common/models.py:1825 +#: common/models.py:1846 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1838 +#: common/models.py:1859 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1844 +#: common/models.py:1865 msgid "Email required" msgstr "" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1852 +#: common/models.py:1873 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "" -#: common/models.py:1859 +#: common/models.py:1880 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "" -#: common/models.py:1865 +#: common/models.py:1886 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "" -#: common/models.py:1879 +#: common/models.py:1900 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1892 +#: common/models.py:1913 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1929 +#: common/models.py:1950 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "" -#: common/models.py:1936 +#: common/models.py:1957 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1950 +#: common/models.py:1971 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1958 +#: common/models.py:1979 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1966 +#: common/models.py:1987 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1974 +#: common/models.py:1995 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2029 common/models.py:2429 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2043 +#: common/models.py:2070 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2045 +#: common/models.py:2072 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2051 +#: common/models.py:2078 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2052 +#: common/models.py:2079 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2057 +#: common/models.py:2084 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2058 +#: common/models.py:2085 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2063 +#: common/models.py:2090 msgid "Show latest parts" msgstr "" -#: common/models.py:2064 +#: common/models.py:2091 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2069 +#: common/models.py:2096 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2070 +#: common/models.py:2097 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2075 +#: common/models.py:2102 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2076 +#: common/models.py:2103 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2081 +#: common/models.py:2108 msgid "Show low stock" msgstr "" -#: common/models.py:2082 +#: common/models.py:2109 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2087 +#: common/models.py:2114 msgid "Show depleted stock" msgstr "" -#: common/models.py:2088 +#: common/models.py:2115 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2093 +#: common/models.py:2120 msgid "Show needed stock" msgstr "" -#: common/models.py:2094 +#: common/models.py:2121 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2099 +#: common/models.py:2126 msgid "Show expired stock" msgstr "" -#: common/models.py:2100 +#: common/models.py:2127 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2105 +#: common/models.py:2132 msgid "Show stale stock" msgstr "" -#: common/models.py:2106 +#: common/models.py:2133 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2111 +#: common/models.py:2138 msgid "Show pending builds" msgstr "" -#: common/models.py:2112 +#: common/models.py:2139 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2117 +#: common/models.py:2144 msgid "Show overdue builds" msgstr "" -#: common/models.py:2118 +#: common/models.py:2145 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2123 +#: common/models.py:2150 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2124 +#: common/models.py:2151 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2129 +#: common/models.py:2156 msgid "Show overdue POs" msgstr "" -#: common/models.py:2130 +#: common/models.py:2157 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2135 +#: common/models.py:2162 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2136 +#: common/models.py:2163 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2141 +#: common/models.py:2168 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2142 +#: common/models.py:2169 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2147 +#: common/models.py:2174 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2148 +#: common/models.py:2175 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2153 +#: common/models.py:2180 msgid "Show News" msgstr "" -#: common/models.py:2154 +#: common/models.py:2181 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2159 +#: common/models.py:2186 msgid "Inline label display" msgstr "" -#: common/models.py:2161 +#: common/models.py:2188 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2167 +#: common/models.py:2194 msgid "Default label printer" msgstr "" -#: common/models.py:2169 +#: common/models.py:2196 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2175 +#: common/models.py:2202 msgid "Inline report display" msgstr "" -#: common/models.py:2177 +#: common/models.py:2204 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2183 +#: common/models.py:2210 msgid "Search Parts" msgstr "" -#: common/models.py:2184 +#: common/models.py:2211 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2189 +#: common/models.py:2216 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2190 +#: common/models.py:2217 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2195 +#: common/models.py:2222 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2196 +#: common/models.py:2223 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2201 +#: common/models.py:2228 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2202 +#: common/models.py:2229 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2207 +#: common/models.py:2234 msgid "Search Categories" msgstr "" -#: common/models.py:2208 +#: common/models.py:2235 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2213 +#: common/models.py:2240 msgid "Search Stock" msgstr "" -#: common/models.py:2214 +#: common/models.py:2241 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2219 +#: common/models.py:2246 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2221 +#: common/models.py:2248 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2227 +#: common/models.py:2254 msgid "Search Locations" msgstr "" -#: common/models.py:2228 +#: common/models.py:2255 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2233 +#: common/models.py:2260 msgid "Search Companies" msgstr "" -#: common/models.py:2234 +#: common/models.py:2261 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2239 +#: common/models.py:2266 msgid "Search Build Orders" msgstr "" -#: common/models.py:2240 +#: common/models.py:2267 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2245 +#: common/models.py:2272 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2246 +#: common/models.py:2273 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2251 +#: common/models.py:2278 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2253 +#: common/models.py:2280 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2259 +#: common/models.py:2286 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2260 +#: common/models.py:2287 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2265 +#: common/models.py:2292 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2267 +#: common/models.py:2294 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2273 +#: common/models.py:2300 msgid "Search Return Orders" msgstr "" -#: common/models.py:2274 +#: common/models.py:2301 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2279 +#: common/models.py:2306 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2281 +#: common/models.py:2308 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2287 +#: common/models.py:2314 msgid "Search Preview Results" msgstr "" -#: common/models.py:2289 +#: common/models.py:2316 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2295 +#: common/models.py:2322 msgid "Regex Search" msgstr "" -#: common/models.py:2296 +#: common/models.py:2323 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2301 +#: common/models.py:2328 msgid "Whole Word Search" msgstr "" -#: common/models.py:2302 +#: common/models.py:2329 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2307 +#: common/models.py:2334 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2308 +#: common/models.py:2335 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2313 +#: common/models.py:2340 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2314 +#: common/models.py:2341 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2319 +#: common/models.py:2346 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2320 +#: common/models.py:2347 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2325 +#: common/models.py:2352 msgid "Date Format" msgstr "" -#: common/models.py:2326 +#: common/models.py:2353 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2366 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2340 +#: common/models.py:2367 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2372 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2347 +#: common/models.py:2374 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2353 +#: common/models.py:2380 msgid "Table String Length" msgstr "" -#: common/models.py:2355 +#: common/models.py:2382 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2361 +#: common/models.py:2388 msgid "Default part label template" msgstr "" -#: common/models.py:2362 +#: common/models.py:2389 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2367 +#: common/models.py:2394 msgid "Default stock item template" msgstr "" -#: common/models.py:2369 +#: common/models.py:2396 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2375 +#: common/models.py:2402 msgid "Default stock location label template" msgstr "" -#: common/models.py:2377 +#: common/models.py:2404 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2383 +#: common/models.py:2410 msgid "Receive error reports" msgstr "" -#: common/models.py:2384 +#: common/models.py:2411 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2389 +#: common/models.py:2416 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2417 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2460 msgid "Price break quantity" msgstr "" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3503,23 +3536,23 @@ msgstr "" msgid "Price" msgstr "" -#: common/models.py:2441 +#: common/models.py:2468 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2639 common/models.py:2824 msgid "Endpoint" msgstr "" -#: common/models.py:2613 +#: common/models.py:2640 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2623 +#: common/models.py:2650 msgid "Name for this webhook" msgstr "" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3529,101 +3562,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2627 +#: common/models.py:2654 msgid "Is this webhook active" msgstr "" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2670 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2644 +#: common/models.py:2671 msgid "Token for access" msgstr "" -#: common/models.py:2652 +#: common/models.py:2679 msgid "Secret" msgstr "" -#: common/models.py:2653 +#: common/models.py:2680 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2761 +#: common/models.py:2788 msgid "Message ID" msgstr "" -#: common/models.py:2762 +#: common/models.py:2789 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2770 +#: common/models.py:2797 msgid "Host" msgstr "" -#: common/models.py:2771 +#: common/models.py:2798 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2779 +#: common/models.py:2806 msgid "Header" msgstr "" -#: common/models.py:2780 +#: common/models.py:2807 msgid "Header of this message" msgstr "" -#: common/models.py:2787 +#: common/models.py:2814 msgid "Body" msgstr "" -#: common/models.py:2788 +#: common/models.py:2815 msgid "Body of this message" msgstr "" -#: common/models.py:2798 +#: common/models.py:2825 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2803 +#: common/models.py:2830 msgid "Worked on" msgstr "" -#: common/models.py:2804 +#: common/models.py:2831 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2930 +#: common/models.py:2957 msgid "Id" msgstr "" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2959 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2963 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2965 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2967 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Read" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Was this news item read?" msgstr "" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2987 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3633,31 +3666,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2960 +#: common/models.py:2987 msgid "Image file" msgstr "" -#: common/models.py:3002 +#: common/models.py:3029 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3021 +#: common/models.py:3048 msgid "Unit name" msgstr "" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3029 +#: common/models.py:3056 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3037 +#: common/models.py:3064 msgid "Unit definition" msgstr "" @@ -3961,7 +3994,7 @@ msgid "Link to address information (external)" msgstr "" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" @@ -3972,7 +4005,7 @@ msgstr "" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3987,7 +4020,7 @@ msgid "Select manufacturer" msgstr "" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4022,9 +4055,9 @@ msgstr "" #: company/models.py:615 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2438 templates/js/translated/company.js:1156 +#: stock/models.py:2441 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1519 msgid "Value" msgstr "" @@ -4033,7 +4066,7 @@ msgid "Parameter value" msgstr "" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4059,7 +4092,7 @@ msgstr "" #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4076,7 +4109,7 @@ msgstr "" msgid "Select supplier" msgstr "" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "" @@ -4093,13 +4126,13 @@ msgid "Supplier part description" msgstr "" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:579 msgid "Note" msgstr "" @@ -4112,10 +4145,10 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 -#: templates/js/translated/stock.js:2387 +#: templates/js/translated/stock.js:2423 msgid "Packaging" msgstr "" @@ -4157,7 +4190,7 @@ msgstr "" msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "" @@ -4218,13 +4251,13 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1100 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 #: templates/js/translated/return_order.js:296 #: templates/js/translated/sales_order.js:784 -#: templates/js/translated/stock.js:2923 +#: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:804 msgid "Customer" msgstr "" @@ -4429,8 +4462,9 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "" @@ -4482,7 +4516,7 @@ msgstr "" #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2243 +#: templates/js/translated/stock.js:2279 msgid "Supplier Part" msgstr "" @@ -4528,7 +4562,7 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4577,15 +4611,17 @@ msgstr "" msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 -#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:193 msgid "Stock Items" msgstr "" @@ -4639,8 +4675,8 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" @@ -4665,7 +4701,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "" @@ -4679,8 +4715,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "" @@ -4821,7 +4857,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1674 -#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "" @@ -4830,7 +4866,7 @@ msgstr "" #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 -#: templates/js/translated/stock.js:2905 +#: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "" @@ -4838,11 +4874,11 @@ msgstr "" msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -5029,9 +5065,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2274 +#: templates/js/translated/stock.js:2310 msgid "Purchase Price" msgstr "" @@ -5084,8 +5120,8 @@ msgstr "" msgid "User who checked this shipment" msgstr "" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "" @@ -5133,7 +5169,7 @@ msgstr "" msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "" @@ -5207,159 +5243,159 @@ msgstr "" msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:610 +#: order/serializers.py:632 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1677 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "" @@ -5733,7 +5769,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" @@ -5763,12 +5799,12 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5780,12 +5816,12 @@ msgstr "" #: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 -#: templates/js/translated/stock.js:1999 +#: templates/js/translated/stock.js:2035 msgid "IPN" msgstr "" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" @@ -5861,10 +5897,10 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -5885,17 +5921,17 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3897 msgid "Part IPN" msgstr "" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5973,8 +6009,8 @@ msgstr "" msgid "This option must be selected" msgstr "" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5982,12 +6018,17 @@ msgstr "" msgid "Category" msgstr "" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5995,7 +6036,7 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -6010,7 +6051,8 @@ msgstr "" msgid "Default location for parts in this category" msgstr "" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 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" @@ -6076,7 +6118,7 @@ msgstr "" msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3896 msgid "Part name" msgstr "" @@ -6358,7 +6400,7 @@ msgstr "" #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1732 -#: templates/js/translated/stock.js:2785 +#: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" @@ -6410,586 +6452,602 @@ msgstr "" msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3448 -msgid "Test with this name already exists for this part" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "" -#: part/models.py:3496 +#: part/models.py:3505 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "" -#: part/models.py:3503 +#: part/models.py:3512 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3847 +#: part/models.py:3856 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3885 +#: part/models.py:3894 msgid "Part ID or part name" msgstr "" -#: part/models.py:3886 +#: part/models.py:3895 msgid "Unique part ID value" msgstr "" -#: part/models.py:3888 +#: part/models.py:3897 msgid "Part IPN value" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "Level" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "BOM level" msgstr "" -#: part/models.py:3979 +#: part/models.py:3988 msgid "Select parent part" msgstr "" -#: part/models.py:3989 +#: part/models.py:3998 msgid "Sub part" msgstr "" -#: part/models.py:3990 +#: part/models.py:3999 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4001 +#: part/models.py:4010 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4007 +#: part/models.py:4016 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4013 +#: part/models.py:4022 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4029 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4021 +#: part/models.py:4030 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4028 +#: part/models.py:4037 msgid "BOM item reference" msgstr "" -#: part/models.py:4036 +#: part/models.py:4045 msgid "BOM item notes" msgstr "" -#: part/models.py:4042 +#: part/models.py:4051 msgid "Checksum" msgstr "" -#: part/models.py:4043 +#: part/models.py:4052 msgid "BOM line checksum" msgstr "" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4057 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4049 +#: part/models.py:4058 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4063 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:4055 +#: part/models.py:4064 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4069 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4061 +#: part/models.py:4070 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4146 stock/models.py:649 +#: part/models.py:4155 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4165 part/models.py:4167 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4298 +#: part/models.py:4307 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4319 +#: part/models.py:4328 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4332 +#: part/models.py:4341 msgid "Parent BOM item" msgstr "" -#: part/models.py:4340 +#: part/models.py:4349 msgid "Substitute part" msgstr "" -#: part/models.py:4356 +#: part/models.py:4365 msgid "Part 1" msgstr "" -#: part/models.py:4364 +#: part/models.py:4373 msgid "Part 2" msgstr "" -#: part/models.py:4365 +#: part/models.py:4374 msgid "Select Related Part" msgstr "" -#: part/models.py:4384 +#: part/models.py:4393 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4389 +#: part/models.py:4398 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:432 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:480 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1104 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1078 +#: part/serializers.py:1114 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1088 +#: part/serializers.py:1124 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1647 +#: part/serializers.py:1693 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1659 +#: part/serializers.py:1705 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1694 +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "" @@ -7147,7 +7205,7 @@ msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/stock.js:2179 users/models.py:191 +#: templates/js/translated/stock.js:2215 users/models.py:191 msgid "Stocktake" msgstr "" @@ -7221,7 +7279,7 @@ msgid "Validate BOM" msgstr "" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "" @@ -7405,7 +7463,7 @@ msgstr "" msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "" @@ -7509,7 +7567,7 @@ msgstr "" #: templates/InvenTree/settings/sidebar.html:51 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 -#: templates/js/translated/stock.js:2033 templates/navbar.html:31 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7555,7 +7613,7 @@ msgstr "" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 -#: templates/js/translated/stock.js:2209 +#: templates/js/translated/stock.js:2245 msgid "Last Updated" msgstr "" @@ -7999,7 +8057,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "" @@ -8307,16 +8365,16 @@ msgstr "" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "" @@ -8336,103 +8394,111 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" msgstr "" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" msgstr "" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8499,12 +8565,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1492 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Result" msgstr "" @@ -8531,7 +8597,7 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:168 #: stock/admin.py:162 templates/js/translated/stock.js:700 -#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110 msgid "Serial" msgstr "" @@ -8615,7 +8681,7 @@ msgstr "" #: stock/admin.py:256 stock/models.py:886 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2193 users/models.py:113 +#: templates/js/translated/stock.js:2229 users/models.py:113 msgid "Expiry Date" msgstr "" @@ -8713,7 +8779,7 @@ msgstr "" msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:174 templates/js/translated/stock.js:2745 +#: stock/models.py:174 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" @@ -8722,7 +8788,7 @@ msgstr "" msgid "This is an external stock location" msgstr "" -#: stock/models.py:181 templates/js/translated/stock.js:2754 +#: stock/models.py:181 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" @@ -8739,7 +8805,7 @@ msgstr "" msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:290 msgid "Stock item cannot be created for virtual parts" msgstr "" @@ -8784,7 +8850,7 @@ msgstr "" msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1351 msgid "Packaging this stock item is stored in" msgstr "" @@ -8796,7 +8862,7 @@ msgstr "" msgid "Serial number for this item" msgstr "" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1334 msgid "Batch code for this stock item" msgstr "" @@ -8873,7 +8939,7 @@ msgstr "" msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:529 msgid "Serial numbers already exist" msgstr "" @@ -8905,7 +8971,7 @@ msgstr "" msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1240 msgid "Duplicate stock items" msgstr "" @@ -8929,207 +8995,236 @@ msgstr "" msgid "Entry notes" msgstr "" -#: stock/models.py:2399 +#: stock/models.py:2402 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2405 +#: stock/models.py:2408 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Test result" msgstr "" -#: stock/models.py:2439 +#: stock/models.py:2442 msgid "Test output value" msgstr "" -#: stock/models.py:2447 +#: stock/models.py:2450 msgid "Test result attachment" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2454 msgid "Test notes" msgstr "" -#: stock/serializers.py:96 +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "" + +#: stock/models.py:2463 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2469 +msgid "Started" +msgstr "" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:100 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:119 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 +#: stock/serializers.py:151 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:184 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:267 +#: stock/serializers.py:282 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:380 +#: stock/serializers.py:402 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:442 +#: stock/serializers.py:464 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:455 +#: stock/serializers.py:477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:462 +#: stock/serializers.py:484 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:480 +#: stock/serializers.py:502 msgid "Optional note field" msgstr "" -#: stock/serializers.py:490 +#: stock/serializers.py:512 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:545 +#: stock/serializers.py:567 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:574 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:553 +#: stock/serializers.py:575 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:566 +#: stock/serializers.py:588 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:596 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:581 +#: stock/serializers.py:607 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:620 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:628 +#: stock/serializers.py:655 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:663 +#: stock/serializers.py:690 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:676 +#: stock/serializers.py:703 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:693 +#: stock/serializers.py:720 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:724 +#: stock/serializers.py:751 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:761 +#: stock/serializers.py:788 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:767 +#: stock/serializers.py:794 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1036 +#: stock/serializers.py:1069 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1040 +#: stock/serializers.py:1073 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1044 +#: stock/serializers.py:1077 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1068 +#: stock/serializers.py:1101 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1074 +#: stock/serializers.py:1107 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1082 +#: stock/serializers.py:1115 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1125 stock/serializers.py:1379 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1171 +#: stock/serializers.py:1204 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1176 +#: stock/serializers.py:1209 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1177 +#: stock/serializers.py:1210 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1182 +#: stock/serializers.py:1215 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1183 +#: stock/serializers.py:1216 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1193 +#: stock/serializers.py:1226 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1260 +#: stock/serializers.py:1293 msgid "No Change" msgstr "" -#: stock/serializers.py:1289 +#: stock/serializers.py:1322 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1308 +#: stock/serializers.py:1341 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1336 +#: stock/serializers.py:1369 msgid "Stock transaction notes" msgstr "" @@ -9154,7 +9249,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 msgid "Delete Test Data" msgstr "" @@ -9170,15 +9265,15 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:274 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 msgid "Add Test Result" msgstr "" @@ -9201,17 +9296,17 @@ msgid "Stock adjustment actions" msgstr "" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 msgid "Count stock" msgstr "" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:1803 msgid "Add stock" msgstr "" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1776 +#: templates/js/translated/stock.js:1812 msgid "Remove stock" msgstr "" @@ -9220,12 +9315,12 @@ msgid "Serialize stock" msgstr "" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 msgid "Transfer stock" msgstr "" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1884 msgid "Assign to customer" msgstr "" @@ -9364,7 +9459,7 @@ msgid "No stocktake performed" msgstr "" #: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1915 +#: templates/js/translated/stock.js:1951 msgid "stock item" msgstr "" @@ -9469,7 +9564,7 @@ msgid "New Location" msgstr "" #: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2536 +#: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" @@ -10063,7 +10158,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:37 msgid "New Location Type" msgstr "" @@ -10120,7 +10215,7 @@ msgstr "" msgid "Stock Settings" msgstr "" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:33 msgid "Stock Location Types" msgstr "" @@ -10662,7 +10757,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "" @@ -10676,7 +10771,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "" @@ -11051,62 +11146,66 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "" @@ -11389,7 +11488,7 @@ msgstr "" #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 -#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11401,7 +11500,7 @@ msgstr "" msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006 +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" @@ -11449,29 +11548,29 @@ msgstr "" msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "" @@ -11804,15 +11903,15 @@ msgstr "" msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3087 +#: templates/js/translated/forms.js:3103 msgid "Select Columns" msgstr "" @@ -12289,7 +12388,7 @@ msgid "No category" msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 -#: templates/js/translated/stock.js:2633 +#: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" @@ -12301,7 +12400,7 @@ msgstr "" msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" @@ -12313,64 +12412,64 @@ msgstr "" msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" @@ -12907,7 +13006,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1737 +#: templates/js/translated/stock.js:1773 msgid "Shipped to customer" msgstr "" @@ -13165,7 +13264,7 @@ msgstr "" msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" @@ -13189,248 +13288,256 @@ msgstr "" msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1440 +#: templates/js/translated/stock.js:1447 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1443 +#: templates/js/translated/stock.js:1450 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1466 +#: templates/js/translated/stock.js:1473 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1530 +#: templates/js/translated/stock.js:1537 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1677 +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1733 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1729 +#: templates/js/translated/stock.js:1765 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1769 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1741 +#: templates/js/translated/stock.js:1777 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1747 +#: templates/js/translated/stock.js:1783 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1839 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1848 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:1897 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1916 +#: templates/js/translated/stock.js:1952 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1921 +#: templates/js/translated/stock.js:1957 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1932 +#: templates/js/translated/stock.js:1968 msgid "Stock Actions" msgstr "" -#: templates/js/translated/stock.js:1976 +#: templates/js/translated/stock.js:2012 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2054 +#: templates/js/translated/stock.js:2090 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2059 +#: templates/js/translated/stock.js:2095 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2062 +#: templates/js/translated/stock.js:2098 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2065 +#: templates/js/translated/stock.js:2101 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2067 +#: templates/js/translated/stock.js:2103 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2069 +#: templates/js/translated/stock.js:2105 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2072 +#: templates/js/translated/stock.js:2108 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2074 +#: templates/js/translated/stock.js:2110 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2114 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2080 +#: templates/js/translated/stock.js:2116 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2085 +#: templates/js/translated/stock.js:2121 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2087 +#: templates/js/translated/stock.js:2123 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2089 +#: templates/js/translated/stock.js:2125 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2129 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2258 +#: templates/js/translated/stock.js:2294 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2305 +#: templates/js/translated/stock.js:2341 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2433 +#: templates/js/translated/stock.js:2469 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2573 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2692 +#: templates/js/translated/stock.js:2728 msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2810 +#: templates/js/translated/stock.js:2846 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2814 +#: templates/js/translated/stock.js:2850 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:2862 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2848 +#: templates/js/translated/stock.js:2884 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2865 +#: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2880 +#: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2897 +#: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2914 +#: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3005 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2977 +#: templates/js/translated/stock.js:3013 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:3049 +#: templates/js/translated/stock.js:3085 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139 +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:3161 +#: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:3182 +#: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:3183 +#: 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:3185 +#: 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:3186 +#: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:3187 +#: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:3188 +#: 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:3201 +#: templates/js/translated/stock.js:3237 msgid "Select part to install" msgstr "" -#: templates/js/translated/stock.js:3264 +#: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" msgstr "" -#: templates/js/translated/stock.js:3277 +#: templates/js/translated/stock.js:3313 msgid "Selected stock items" msgstr "" -#: templates/js/translated/stock.js:3281 +#: templates/js/translated/stock.js:3317 msgid "Change Stock Status" msgstr "" diff --git a/InvenTree/locale/hi/LC_MESSAGES/django.po b/InvenTree/locale/hi/LC_MESSAGES/django.po index 272618c1c6..ae19920fc4 100644 --- a/InvenTree/locale/hi/LC_MESSAGES/django.po +++ b/InvenTree/locale/hi/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 04:05+0000\n" -"PO-Revision-Date: 2024-02-28 07:23\n" +"POT-Creation-Date: 2024-03-19 01:26+0000\n" +"PO-Revision-Date: 2024-03-20 12:27\n" "Last-Translator: \n" "Language-Team: Hindi\n" "Language: hi_IN\n" @@ -30,20 +30,20 @@ msgstr "" msgid "Invalid unit provided ({unit})" msgstr "" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" msgstr "" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" msgstr "" @@ -64,18 +64,18 @@ msgstr "तारीख दर्ज करें" #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 #: templates/js/translated/return_order.js:776 #: templates/js/translated/sales_order.js:1067 #: templates/js/translated/sales_order.js:1982 -#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 msgid "Notes" msgstr "" @@ -132,42 +132,42 @@ msgstr "" msgid "Registration is disabled." msgstr "" -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "" @@ -203,131 +203,135 @@ msgstr "" msgid "Supplied URL is not a valid image file" msgstr "" -#: InvenTree/locales.py:16 +#: InvenTree/locales.py:18 msgid "Bulgarian" msgstr "" -#: InvenTree/locales.py:17 +#: InvenTree/locales.py:19 msgid "Czech" msgstr "" -#: InvenTree/locales.py:18 +#: InvenTree/locales.py:20 msgid "Danish" msgstr "" -#: InvenTree/locales.py:19 +#: InvenTree/locales.py:21 msgid "German" msgstr "" -#: InvenTree/locales.py:20 +#: InvenTree/locales.py:22 msgid "Greek" msgstr "" -#: InvenTree/locales.py:21 +#: InvenTree/locales.py:23 msgid "English" msgstr "" -#: InvenTree/locales.py:22 +#: InvenTree/locales.py:24 msgid "Spanish" msgstr "" -#: InvenTree/locales.py:23 +#: InvenTree/locales.py:25 msgid "Spanish (Mexican)" msgstr "" -#: InvenTree/locales.py:24 +#: InvenTree/locales.py:26 msgid "Farsi / Persian" msgstr "" -#: InvenTree/locales.py:25 +#: InvenTree/locales.py:27 msgid "Finnish" msgstr "" -#: InvenTree/locales.py:26 +#: InvenTree/locales.py:28 msgid "French" msgstr "" -#: InvenTree/locales.py:27 +#: InvenTree/locales.py:29 msgid "Hebrew" msgstr "" -#: InvenTree/locales.py:28 +#: InvenTree/locales.py:30 msgid "Hindi" msgstr "" -#: InvenTree/locales.py:29 +#: InvenTree/locales.py:31 msgid "Hungarian" msgstr "" -#: InvenTree/locales.py:30 +#: InvenTree/locales.py:32 msgid "Italian" msgstr "" -#: InvenTree/locales.py:31 +#: InvenTree/locales.py:33 msgid "Japanese" msgstr "" -#: InvenTree/locales.py:32 +#: InvenTree/locales.py:34 msgid "Korean" msgstr "" -#: InvenTree/locales.py:33 -msgid "Dutch" -msgstr "" - -#: InvenTree/locales.py:34 -msgid "Norwegian" -msgstr "" - #: InvenTree/locales.py:35 -msgid "Polish" +msgid "Latvian" msgstr "" #: InvenTree/locales.py:36 -msgid "Portuguese" +msgid "Dutch" msgstr "" #: InvenTree/locales.py:37 -msgid "Portuguese (Brazilian)" +msgid "Norwegian" msgstr "" #: InvenTree/locales.py:38 -msgid "Russian" +msgid "Polish" msgstr "" #: InvenTree/locales.py:39 -msgid "Slovak" +msgid "Portuguese" msgstr "" #: InvenTree/locales.py:40 -msgid "Slovenian" +msgid "Portuguese (Brazilian)" msgstr "" #: InvenTree/locales.py:41 -msgid "Serbian" +msgid "Russian" msgstr "" #: InvenTree/locales.py:42 -msgid "Swedish" +msgid "Slovak" msgstr "" #: InvenTree/locales.py:43 -msgid "Thai" +msgid "Slovenian" msgstr "" #: InvenTree/locales.py:44 -msgid "Turkish" +msgid "Serbian" msgstr "" #: InvenTree/locales.py:45 -msgid "Vietnamese" +msgid "Swedish" msgstr "" #: InvenTree/locales.py:46 -msgid "Chinese (Simplified)" +msgid "Thai" msgstr "" #: InvenTree/locales.py:47 +msgid "Turkish" +msgstr "" + +#: InvenTree/locales.py:48 +msgid "Vietnamese" +msgstr "" + +#: InvenTree/locales.py:49 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:50 msgid "Chinese (Traditional)" msgstr "" @@ -391,7 +395,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:559 stock/models.py:2446 +#: InvenTree/models.py:559 stock/models.py:2449 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -401,7 +405,7 @@ msgstr "" msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -432,13 +436,13 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:3000 users/models.py:100 +#: templates/js/translated/stock.js:3036 users/models.py:100 msgid "User" msgstr "" @@ -479,10 +483,10 @@ msgstr "" msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -495,7 +499,7 @@ msgstr "" #: templates/js/translated/company.js:1155 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "" @@ -506,10 +510,10 @@ msgstr "" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -523,7 +527,7 @@ msgstr "" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -531,8 +535,8 @@ msgstr "" #: templates/js/translated/return_order.js:314 #: templates/js/translated/sales_order.js:802 #: templates/js/translated/sales_order.js:1812 -#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021 -#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "" @@ -545,7 +549,7 @@ msgid "parent" msgstr "" #: InvenTree/models.py:916 templates/js/translated/part.js:2794 -#: templates/js/translated/stock.js:2721 +#: templates/js/translated/stock.js:2757 msgid "Path" msgstr "" @@ -581,7 +585,7 @@ msgstr "" msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:62 part/models.py:4134 +#: InvenTree/serializers.py:62 part/models.py:4143 msgid "Must be a valid number" msgstr "" @@ -596,89 +600,89 @@ msgstr "" msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:436 +#: InvenTree/serializers.py:441 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:448 +#: InvenTree/serializers.py:453 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:467 +#: InvenTree/serializers.py:472 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:469 +#: InvenTree/serializers.py:474 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:476 +#: InvenTree/serializers.py:481 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:537 +#: InvenTree/serializers.py:542 msgid "Filename" msgstr "" -#: InvenTree/serializers.py:571 +#: InvenTree/serializers.py:576 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:591 +#: InvenTree/serializers.py:596 msgid "Data File" msgstr "" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:597 msgid "Select data file for upload" msgstr "" -#: InvenTree/serializers.py:609 +#: InvenTree/serializers.py:614 msgid "Unsupported file type" msgstr "" -#: InvenTree/serializers.py:615 +#: InvenTree/serializers.py:620 msgid "File is too large" msgstr "" -#: InvenTree/serializers.py:636 +#: InvenTree/serializers.py:641 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:639 +#: InvenTree/serializers.py:644 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:752 +#: InvenTree/serializers.py:757 msgid "No data rows provided" msgstr "" -#: InvenTree/serializers.py:755 +#: InvenTree/serializers.py:760 msgid "No data columns supplied" msgstr "" -#: InvenTree/serializers.py:822 +#: InvenTree/serializers.py:827 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "" -#: InvenTree/serializers.py:831 +#: InvenTree/serializers.py:836 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:859 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:855 +#: InvenTree/serializers.py:860 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:873 +#: InvenTree/serializers.py:878 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/status.py:66 part/serializers.py:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "" @@ -818,7 +822,7 @@ msgstr "" msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 msgid "Merged stock items" msgstr "" @@ -838,7 +842,7 @@ msgstr "" msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 msgid "Consumed by build order" msgstr "" @@ -938,14 +942,14 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -960,7 +964,7 @@ msgid "Tracked" msgstr "" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -985,7 +989,7 @@ msgstr "" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "" @@ -1014,7 +1018,7 @@ msgstr "" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1044,11 +1048,11 @@ msgstr "" #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1059,7 +1063,7 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:267 stock/serializers.py:689 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1086,9 +1090,9 @@ msgstr "" #: templates/js/translated/sales_order.js:1598 #: templates/js/translated/sales_order.js:1796 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960 -#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054 -#: templates/js/translated/stock.js:3200 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 msgid "Part" msgstr "" @@ -1146,8 +1150,8 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" @@ -1242,53 +1246,53 @@ msgstr "" msgid "Project code for this build order" msgstr "" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "" -#: build/models.py:789 +#: build/models.py:805 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" msgstr "" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1298,7 +1302,7 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:463 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1310,7 +1314,7 @@ msgstr "" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1325,43 +1329,43 @@ msgstr "" #: templates/js/translated/sales_order.js:1698 #: templates/js/translated/sales_order.js:1824 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 -#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985 -#: templates/js/translated/stock.js:3068 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1381 +#: build/models.py:1397 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1390 +#: build/models.py:1406 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1473 +#: build/models.py:1489 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 @@ -1372,23 +1376,23 @@ msgstr "" #: templates/js/translated/sales_order.js:1605 #: templates/js/translated/sales_order.js:1692 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 -#: templates/js/translated/stock.js:2941 +#: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "" @@ -1425,8 +1429,8 @@ msgstr "" msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" @@ -1451,10 +1455,10 @@ msgstr "" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1466,8 +1470,8 @@ msgstr "" #: templates/js/translated/sales_order.js:1627 #: templates/js/translated/sales_order.js:1706 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164 -#: templates/js/translated/stock.js:2835 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 msgid "Location" msgstr "" @@ -1493,16 +1497,16 @@ msgstr "" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 #: templates/js/translated/purchase_order.js:1723 #: templates/js/translated/return_order.js:331 #: templates/js/translated/sales_order.js:819 -#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959 -#: templates/js/translated/stock.js:3084 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 msgid "Status" msgstr "" @@ -1566,7 +1570,7 @@ msgstr "" msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "" @@ -1602,11 +1606,11 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1065 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" @@ -1619,7 +1623,7 @@ msgstr "" msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "" @@ -1659,44 +1663,45 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 #: stock/api.py:745 msgid "BOM Item" msgstr "" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1862,7 +1867,7 @@ msgstr "" #: templates/js/translated/pricing.js:929 #: templates/js/translated/sales_order.js:769 #: templates/js/translated/sales_order.js:992 -#: templates/js/translated/stock.js:2888 +#: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "" @@ -1920,8 +1925,8 @@ msgstr "" #: templates/js/translated/build.js:1377 #: templates/js/translated/model_renderers.js:235 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153 -#: templates/js/translated/stock.js:3091 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" @@ -1990,27 +1995,31 @@ msgstr "" msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:210 -msgid "Incomplete Build Outputs" -msgstr "" - -#: build/templates/build/detail.html:214 -msgid "Create new build output" +#: 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:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2026,15 +2035,15 @@ msgstr "" msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" msgstr "" @@ -2112,1390 +2121,1414 @@ msgstr "" msgid "User or group responsible for this project" msgstr "" -#: common/models.py:737 +#: common/models.py:744 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:741 +#: common/models.py:748 msgid "Settings value" msgstr "" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "" -#: common/models.py:1231 +#: common/models.py:1238 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1283 +#: common/models.py:1290 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "" -#: common/models.py:1298 +#: common/models.py:1305 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "" -#: common/models.py:1305 +#: common/models.py:1312 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "" -#: common/models.py:1332 +#: common/models.py:1339 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "" -#: common/models.py:1339 +#: common/models.py:1346 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "" -#: common/models.py:1346 +#: common/models.py:1353 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1352 +#: common/models.py:1359 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1360 +#: common/models.py:1367 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1369 +#: common/models.py:1376 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1378 +#: common/models.py:1385 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1386 +#: common/models.py:1393 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1399 +#: common/models.py:1406 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "" -#: common/models.py:1411 +#: common/models.py:1418 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1415 +#: common/models.py:1422 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1421 +#: common/models.py:1428 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1427 +#: common/models.py:1434 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1433 +#: common/models.py:1440 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1439 +#: common/models.py:1446 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1505 +#: common/models.py:1512 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1512 +#: common/models.py:1519 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "" -#: common/models.py:1525 +#: common/models.py:1532 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1526 +#: common/models.py:1533 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1530 +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1532 +#: common/models.py:1539 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1540 +#: common/models.py:1547 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1548 +#: common/models.py:1555 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1564 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1580 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1588 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1595 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1603 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1611 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1618 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1632 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1645 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: 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:202 msgid "Page Size" msgstr "" -#: common/models.py:1651 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1657 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1664 +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1671 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1677 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1692 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1704 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1711 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1719 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1725 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1731 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1736 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1741 +#: 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 "Build Order Reference Pattern" msgstr "" -#: common/models.py:1743 +#: common/models.py:1764 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1757 +#: common/models.py:1778 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1765 +#: common/models.py:1786 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1773 +#: common/models.py:1794 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1780 +#: common/models.py:1801 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1787 +#: common/models.py:1808 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1795 +#: common/models.py:1816 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1803 +#: common/models.py:1824 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1811 +#: common/models.py:1832 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "" -#: common/models.py:1825 +#: common/models.py:1846 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1838 +#: common/models.py:1859 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1844 +#: common/models.py:1865 msgid "Email required" msgstr "" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1852 +#: common/models.py:1873 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "" -#: common/models.py:1859 +#: common/models.py:1880 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "" -#: common/models.py:1865 +#: common/models.py:1886 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "" -#: common/models.py:1879 +#: common/models.py:1900 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1892 +#: common/models.py:1913 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1929 +#: common/models.py:1950 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "" -#: common/models.py:1936 +#: common/models.py:1957 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1950 +#: common/models.py:1971 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1958 +#: common/models.py:1979 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1966 +#: common/models.py:1987 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1974 +#: common/models.py:1995 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2029 common/models.py:2429 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2043 +#: common/models.py:2070 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2045 +#: common/models.py:2072 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2051 +#: common/models.py:2078 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2052 +#: common/models.py:2079 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2057 +#: common/models.py:2084 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2058 +#: common/models.py:2085 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2063 +#: common/models.py:2090 msgid "Show latest parts" msgstr "" -#: common/models.py:2064 +#: common/models.py:2091 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2069 +#: common/models.py:2096 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2070 +#: common/models.py:2097 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2075 +#: common/models.py:2102 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2076 +#: common/models.py:2103 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2081 +#: common/models.py:2108 msgid "Show low stock" msgstr "" -#: common/models.py:2082 +#: common/models.py:2109 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2087 +#: common/models.py:2114 msgid "Show depleted stock" msgstr "" -#: common/models.py:2088 +#: common/models.py:2115 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2093 +#: common/models.py:2120 msgid "Show needed stock" msgstr "" -#: common/models.py:2094 +#: common/models.py:2121 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2099 +#: common/models.py:2126 msgid "Show expired stock" msgstr "" -#: common/models.py:2100 +#: common/models.py:2127 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2105 +#: common/models.py:2132 msgid "Show stale stock" msgstr "" -#: common/models.py:2106 +#: common/models.py:2133 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2111 +#: common/models.py:2138 msgid "Show pending builds" msgstr "" -#: common/models.py:2112 +#: common/models.py:2139 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2117 +#: common/models.py:2144 msgid "Show overdue builds" msgstr "" -#: common/models.py:2118 +#: common/models.py:2145 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2123 +#: common/models.py:2150 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2124 +#: common/models.py:2151 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2129 +#: common/models.py:2156 msgid "Show overdue POs" msgstr "" -#: common/models.py:2130 +#: common/models.py:2157 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2135 +#: common/models.py:2162 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2136 +#: common/models.py:2163 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2141 +#: common/models.py:2168 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2142 +#: common/models.py:2169 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2147 +#: common/models.py:2174 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2148 +#: common/models.py:2175 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2153 +#: common/models.py:2180 msgid "Show News" msgstr "" -#: common/models.py:2154 +#: common/models.py:2181 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2159 +#: common/models.py:2186 msgid "Inline label display" msgstr "" -#: common/models.py:2161 +#: common/models.py:2188 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2167 +#: common/models.py:2194 msgid "Default label printer" msgstr "" -#: common/models.py:2169 +#: common/models.py:2196 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2175 +#: common/models.py:2202 msgid "Inline report display" msgstr "" -#: common/models.py:2177 +#: common/models.py:2204 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2183 +#: common/models.py:2210 msgid "Search Parts" msgstr "" -#: common/models.py:2184 +#: common/models.py:2211 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2189 +#: common/models.py:2216 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2190 +#: common/models.py:2217 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2195 +#: common/models.py:2222 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2196 +#: common/models.py:2223 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2201 +#: common/models.py:2228 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2202 +#: common/models.py:2229 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2207 +#: common/models.py:2234 msgid "Search Categories" msgstr "" -#: common/models.py:2208 +#: common/models.py:2235 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2213 +#: common/models.py:2240 msgid "Search Stock" msgstr "" -#: common/models.py:2214 +#: common/models.py:2241 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2219 +#: common/models.py:2246 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2221 +#: common/models.py:2248 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2227 +#: common/models.py:2254 msgid "Search Locations" msgstr "" -#: common/models.py:2228 +#: common/models.py:2255 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2233 +#: common/models.py:2260 msgid "Search Companies" msgstr "" -#: common/models.py:2234 +#: common/models.py:2261 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2239 +#: common/models.py:2266 msgid "Search Build Orders" msgstr "" -#: common/models.py:2240 +#: common/models.py:2267 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2245 +#: common/models.py:2272 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2246 +#: common/models.py:2273 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2251 +#: common/models.py:2278 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2253 +#: common/models.py:2280 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2259 +#: common/models.py:2286 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2260 +#: common/models.py:2287 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2265 +#: common/models.py:2292 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2267 +#: common/models.py:2294 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2273 +#: common/models.py:2300 msgid "Search Return Orders" msgstr "" -#: common/models.py:2274 +#: common/models.py:2301 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2279 +#: common/models.py:2306 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2281 +#: common/models.py:2308 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2287 +#: common/models.py:2314 msgid "Search Preview Results" msgstr "" -#: common/models.py:2289 +#: common/models.py:2316 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2295 +#: common/models.py:2322 msgid "Regex Search" msgstr "" -#: common/models.py:2296 +#: common/models.py:2323 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2301 +#: common/models.py:2328 msgid "Whole Word Search" msgstr "" -#: common/models.py:2302 +#: common/models.py:2329 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2307 +#: common/models.py:2334 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2308 +#: common/models.py:2335 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2313 +#: common/models.py:2340 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2314 +#: common/models.py:2341 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2319 +#: common/models.py:2346 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2320 +#: common/models.py:2347 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2325 +#: common/models.py:2352 msgid "Date Format" msgstr "" -#: common/models.py:2326 +#: common/models.py:2353 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2366 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2340 +#: common/models.py:2367 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2372 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2347 +#: common/models.py:2374 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2353 +#: common/models.py:2380 msgid "Table String Length" msgstr "" -#: common/models.py:2355 +#: common/models.py:2382 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2361 +#: common/models.py:2388 msgid "Default part label template" msgstr "" -#: common/models.py:2362 +#: common/models.py:2389 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2367 +#: common/models.py:2394 msgid "Default stock item template" msgstr "" -#: common/models.py:2369 +#: common/models.py:2396 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2375 +#: common/models.py:2402 msgid "Default stock location label template" msgstr "" -#: common/models.py:2377 +#: common/models.py:2404 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2383 +#: common/models.py:2410 msgid "Receive error reports" msgstr "" -#: common/models.py:2384 +#: common/models.py:2411 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2389 +#: common/models.py:2416 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2417 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2460 msgid "Price break quantity" msgstr "" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3503,23 +3536,23 @@ msgstr "" msgid "Price" msgstr "" -#: common/models.py:2441 +#: common/models.py:2468 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2639 common/models.py:2824 msgid "Endpoint" msgstr "" -#: common/models.py:2613 +#: common/models.py:2640 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2623 +#: common/models.py:2650 msgid "Name for this webhook" msgstr "" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3529,101 +3562,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2627 +#: common/models.py:2654 msgid "Is this webhook active" msgstr "" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2670 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2644 +#: common/models.py:2671 msgid "Token for access" msgstr "" -#: common/models.py:2652 +#: common/models.py:2679 msgid "Secret" msgstr "" -#: common/models.py:2653 +#: common/models.py:2680 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2761 +#: common/models.py:2788 msgid "Message ID" msgstr "" -#: common/models.py:2762 +#: common/models.py:2789 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2770 +#: common/models.py:2797 msgid "Host" msgstr "" -#: common/models.py:2771 +#: common/models.py:2798 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2779 +#: common/models.py:2806 msgid "Header" msgstr "" -#: common/models.py:2780 +#: common/models.py:2807 msgid "Header of this message" msgstr "" -#: common/models.py:2787 +#: common/models.py:2814 msgid "Body" msgstr "" -#: common/models.py:2788 +#: common/models.py:2815 msgid "Body of this message" msgstr "" -#: common/models.py:2798 +#: common/models.py:2825 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2803 +#: common/models.py:2830 msgid "Worked on" msgstr "" -#: common/models.py:2804 +#: common/models.py:2831 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2930 +#: common/models.py:2957 msgid "Id" msgstr "" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2959 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2963 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2965 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2967 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Read" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Was this news item read?" msgstr "" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2987 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3633,31 +3666,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2960 +#: common/models.py:2987 msgid "Image file" msgstr "" -#: common/models.py:3002 +#: common/models.py:3029 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3021 +#: common/models.py:3048 msgid "Unit name" msgstr "" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3029 +#: common/models.py:3056 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3037 +#: common/models.py:3064 msgid "Unit definition" msgstr "" @@ -3961,7 +3994,7 @@ msgid "Link to address information (external)" msgstr "" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" @@ -3972,7 +4005,7 @@ msgstr "" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3987,7 +4020,7 @@ msgid "Select manufacturer" msgstr "" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4022,9 +4055,9 @@ msgstr "" #: company/models.py:615 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2438 templates/js/translated/company.js:1156 +#: stock/models.py:2441 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1519 msgid "Value" msgstr "" @@ -4033,7 +4066,7 @@ msgid "Parameter value" msgstr "" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4059,7 +4092,7 @@ msgstr "" #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4076,7 +4109,7 @@ msgstr "" msgid "Select supplier" msgstr "" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "" @@ -4093,13 +4126,13 @@ msgid "Supplier part description" msgstr "" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:579 msgid "Note" msgstr "" @@ -4112,10 +4145,10 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 -#: templates/js/translated/stock.js:2387 +#: templates/js/translated/stock.js:2423 msgid "Packaging" msgstr "" @@ -4157,7 +4190,7 @@ msgstr "" msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "" @@ -4218,13 +4251,13 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1100 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 #: templates/js/translated/return_order.js:296 #: templates/js/translated/sales_order.js:784 -#: templates/js/translated/stock.js:2923 +#: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:804 msgid "Customer" msgstr "" @@ -4429,8 +4462,9 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "" @@ -4482,7 +4516,7 @@ msgstr "" #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2243 +#: templates/js/translated/stock.js:2279 msgid "Supplier Part" msgstr "" @@ -4528,7 +4562,7 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4577,15 +4611,17 @@ msgstr "" msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 -#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:193 msgid "Stock Items" msgstr "" @@ -4639,8 +4675,8 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" @@ -4665,7 +4701,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "" @@ -4679,8 +4715,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "" @@ -4821,7 +4857,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1674 -#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "" @@ -4830,7 +4866,7 @@ msgstr "" #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 -#: templates/js/translated/stock.js:2905 +#: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "" @@ -4838,11 +4874,11 @@ msgstr "" msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -5029,9 +5065,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2274 +#: templates/js/translated/stock.js:2310 msgid "Purchase Price" msgstr "" @@ -5084,8 +5120,8 @@ msgstr "" msgid "User who checked this shipment" msgstr "" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "" @@ -5133,7 +5169,7 @@ msgstr "" msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "" @@ -5207,159 +5243,159 @@ msgstr "" msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:610 +#: order/serializers.py:632 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1677 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "" @@ -5733,7 +5769,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" @@ -5763,12 +5799,12 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5780,12 +5816,12 @@ msgstr "" #: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 -#: templates/js/translated/stock.js:1999 +#: templates/js/translated/stock.js:2035 msgid "IPN" msgstr "" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" @@ -5861,10 +5897,10 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -5885,17 +5921,17 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3897 msgid "Part IPN" msgstr "" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5973,8 +6009,8 @@ msgstr "" msgid "This option must be selected" msgstr "" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5982,12 +6018,17 @@ msgstr "" msgid "Category" msgstr "" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5995,7 +6036,7 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -6010,7 +6051,8 @@ msgstr "" msgid "Default location for parts in this category" msgstr "" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 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" @@ -6076,7 +6118,7 @@ msgstr "" msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3896 msgid "Part name" msgstr "" @@ -6358,7 +6400,7 @@ msgstr "" #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1732 -#: templates/js/translated/stock.js:2785 +#: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" @@ -6410,586 +6452,602 @@ msgstr "" msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3448 -msgid "Test with this name already exists for this part" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "" -#: part/models.py:3496 +#: part/models.py:3505 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "" -#: part/models.py:3503 +#: part/models.py:3512 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3847 +#: part/models.py:3856 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3885 +#: part/models.py:3894 msgid "Part ID or part name" msgstr "" -#: part/models.py:3886 +#: part/models.py:3895 msgid "Unique part ID value" msgstr "" -#: part/models.py:3888 +#: part/models.py:3897 msgid "Part IPN value" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "Level" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "BOM level" msgstr "" -#: part/models.py:3979 +#: part/models.py:3988 msgid "Select parent part" msgstr "" -#: part/models.py:3989 +#: part/models.py:3998 msgid "Sub part" msgstr "" -#: part/models.py:3990 +#: part/models.py:3999 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4001 +#: part/models.py:4010 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4007 +#: part/models.py:4016 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4013 +#: part/models.py:4022 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4029 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4021 +#: part/models.py:4030 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4028 +#: part/models.py:4037 msgid "BOM item reference" msgstr "" -#: part/models.py:4036 +#: part/models.py:4045 msgid "BOM item notes" msgstr "" -#: part/models.py:4042 +#: part/models.py:4051 msgid "Checksum" msgstr "" -#: part/models.py:4043 +#: part/models.py:4052 msgid "BOM line checksum" msgstr "" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4057 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4049 +#: part/models.py:4058 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4063 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:4055 +#: part/models.py:4064 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4069 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4061 +#: part/models.py:4070 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4146 stock/models.py:649 +#: part/models.py:4155 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4165 part/models.py:4167 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4298 +#: part/models.py:4307 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4319 +#: part/models.py:4328 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4332 +#: part/models.py:4341 msgid "Parent BOM item" msgstr "" -#: part/models.py:4340 +#: part/models.py:4349 msgid "Substitute part" msgstr "" -#: part/models.py:4356 +#: part/models.py:4365 msgid "Part 1" msgstr "" -#: part/models.py:4364 +#: part/models.py:4373 msgid "Part 2" msgstr "" -#: part/models.py:4365 +#: part/models.py:4374 msgid "Select Related Part" msgstr "" -#: part/models.py:4384 +#: part/models.py:4393 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4389 +#: part/models.py:4398 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:432 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:480 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1104 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1078 +#: part/serializers.py:1114 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1088 +#: part/serializers.py:1124 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1647 +#: part/serializers.py:1693 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1659 +#: part/serializers.py:1705 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1694 +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "" @@ -7147,7 +7205,7 @@ msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/stock.js:2179 users/models.py:191 +#: templates/js/translated/stock.js:2215 users/models.py:191 msgid "Stocktake" msgstr "" @@ -7221,7 +7279,7 @@ msgid "Validate BOM" msgstr "" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "" @@ -7405,7 +7463,7 @@ msgstr "" msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "" @@ -7509,7 +7567,7 @@ msgstr "" #: templates/InvenTree/settings/sidebar.html:51 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 -#: templates/js/translated/stock.js:2033 templates/navbar.html:31 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7555,7 +7613,7 @@ msgstr "" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 -#: templates/js/translated/stock.js:2209 +#: templates/js/translated/stock.js:2245 msgid "Last Updated" msgstr "" @@ -7999,7 +8057,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "" @@ -8307,16 +8365,16 @@ msgstr "" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "" @@ -8336,103 +8394,111 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" msgstr "" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" msgstr "" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8499,12 +8565,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1492 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Result" msgstr "" @@ -8531,7 +8597,7 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:168 #: stock/admin.py:162 templates/js/translated/stock.js:700 -#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110 msgid "Serial" msgstr "" @@ -8615,7 +8681,7 @@ msgstr "" #: stock/admin.py:256 stock/models.py:886 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2193 users/models.py:113 +#: templates/js/translated/stock.js:2229 users/models.py:113 msgid "Expiry Date" msgstr "" @@ -8713,7 +8779,7 @@ msgstr "" msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:174 templates/js/translated/stock.js:2745 +#: stock/models.py:174 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" @@ -8722,7 +8788,7 @@ msgstr "" msgid "This is an external stock location" msgstr "" -#: stock/models.py:181 templates/js/translated/stock.js:2754 +#: stock/models.py:181 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" @@ -8739,7 +8805,7 @@ msgstr "" msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:290 msgid "Stock item cannot be created for virtual parts" msgstr "" @@ -8784,7 +8850,7 @@ msgstr "" msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1351 msgid "Packaging this stock item is stored in" msgstr "" @@ -8796,7 +8862,7 @@ msgstr "" msgid "Serial number for this item" msgstr "" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1334 msgid "Batch code for this stock item" msgstr "" @@ -8873,7 +8939,7 @@ msgstr "" msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:529 msgid "Serial numbers already exist" msgstr "" @@ -8905,7 +8971,7 @@ msgstr "" msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1240 msgid "Duplicate stock items" msgstr "" @@ -8929,207 +8995,236 @@ msgstr "" msgid "Entry notes" msgstr "" -#: stock/models.py:2399 +#: stock/models.py:2402 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2405 +#: stock/models.py:2408 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Test result" msgstr "" -#: stock/models.py:2439 +#: stock/models.py:2442 msgid "Test output value" msgstr "" -#: stock/models.py:2447 +#: stock/models.py:2450 msgid "Test result attachment" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2454 msgid "Test notes" msgstr "" -#: stock/serializers.py:96 +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "" + +#: stock/models.py:2463 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2469 +msgid "Started" +msgstr "" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:100 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:119 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 +#: stock/serializers.py:151 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:184 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:267 +#: stock/serializers.py:282 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:380 +#: stock/serializers.py:402 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:442 +#: stock/serializers.py:464 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:455 +#: stock/serializers.py:477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:462 +#: stock/serializers.py:484 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:480 +#: stock/serializers.py:502 msgid "Optional note field" msgstr "" -#: stock/serializers.py:490 +#: stock/serializers.py:512 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:545 +#: stock/serializers.py:567 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:574 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:553 +#: stock/serializers.py:575 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:566 +#: stock/serializers.py:588 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:596 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:581 +#: stock/serializers.py:607 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:620 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:628 +#: stock/serializers.py:655 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:663 +#: stock/serializers.py:690 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:676 +#: stock/serializers.py:703 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:693 +#: stock/serializers.py:720 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:724 +#: stock/serializers.py:751 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:761 +#: stock/serializers.py:788 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:767 +#: stock/serializers.py:794 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1036 +#: stock/serializers.py:1069 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1040 +#: stock/serializers.py:1073 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1044 +#: stock/serializers.py:1077 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1068 +#: stock/serializers.py:1101 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1074 +#: stock/serializers.py:1107 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1082 +#: stock/serializers.py:1115 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1125 stock/serializers.py:1379 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1171 +#: stock/serializers.py:1204 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1176 +#: stock/serializers.py:1209 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1177 +#: stock/serializers.py:1210 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1182 +#: stock/serializers.py:1215 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1183 +#: stock/serializers.py:1216 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1193 +#: stock/serializers.py:1226 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1260 +#: stock/serializers.py:1293 msgid "No Change" msgstr "" -#: stock/serializers.py:1289 +#: stock/serializers.py:1322 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1308 +#: stock/serializers.py:1341 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1336 +#: stock/serializers.py:1369 msgid "Stock transaction notes" msgstr "" @@ -9154,7 +9249,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 msgid "Delete Test Data" msgstr "" @@ -9170,15 +9265,15 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:274 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 msgid "Add Test Result" msgstr "" @@ -9201,17 +9296,17 @@ msgid "Stock adjustment actions" msgstr "" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 msgid "Count stock" msgstr "" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:1803 msgid "Add stock" msgstr "" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1776 +#: templates/js/translated/stock.js:1812 msgid "Remove stock" msgstr "" @@ -9220,12 +9315,12 @@ msgid "Serialize stock" msgstr "" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 msgid "Transfer stock" msgstr "" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1884 msgid "Assign to customer" msgstr "" @@ -9364,7 +9459,7 @@ msgid "No stocktake performed" msgstr "" #: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1915 +#: templates/js/translated/stock.js:1951 msgid "stock item" msgstr "" @@ -9469,7 +9564,7 @@ msgid "New Location" msgstr "" #: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2536 +#: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" @@ -10063,7 +10158,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:37 msgid "New Location Type" msgstr "" @@ -10120,7 +10215,7 @@ msgstr "" msgid "Stock Settings" msgstr "" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:33 msgid "Stock Location Types" msgstr "" @@ -10662,7 +10757,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "" @@ -10676,7 +10771,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "" @@ -11051,62 +11146,66 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "" @@ -11389,7 +11488,7 @@ msgstr "" #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 -#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11401,7 +11500,7 @@ msgstr "" msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006 +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" @@ -11449,29 +11548,29 @@ msgstr "" msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "" @@ -11804,15 +11903,15 @@ msgstr "" msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3087 +#: templates/js/translated/forms.js:3103 msgid "Select Columns" msgstr "" @@ -12289,7 +12388,7 @@ msgid "No category" msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 -#: templates/js/translated/stock.js:2633 +#: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" @@ -12301,7 +12400,7 @@ msgstr "" msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" @@ -12313,64 +12412,64 @@ msgstr "" msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" @@ -12907,7 +13006,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1737 +#: templates/js/translated/stock.js:1773 msgid "Shipped to customer" msgstr "" @@ -13165,7 +13264,7 @@ msgstr "" msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" @@ -13189,248 +13288,256 @@ msgstr "" msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1440 +#: templates/js/translated/stock.js:1447 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1443 +#: templates/js/translated/stock.js:1450 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1466 +#: templates/js/translated/stock.js:1473 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1530 +#: templates/js/translated/stock.js:1537 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1677 +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1733 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1729 +#: templates/js/translated/stock.js:1765 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1769 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1741 +#: templates/js/translated/stock.js:1777 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1747 +#: templates/js/translated/stock.js:1783 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1839 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1848 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:1897 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1916 +#: templates/js/translated/stock.js:1952 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1921 +#: templates/js/translated/stock.js:1957 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1932 +#: templates/js/translated/stock.js:1968 msgid "Stock Actions" msgstr "" -#: templates/js/translated/stock.js:1976 +#: templates/js/translated/stock.js:2012 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2054 +#: templates/js/translated/stock.js:2090 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2059 +#: templates/js/translated/stock.js:2095 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2062 +#: templates/js/translated/stock.js:2098 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2065 +#: templates/js/translated/stock.js:2101 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2067 +#: templates/js/translated/stock.js:2103 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2069 +#: templates/js/translated/stock.js:2105 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2072 +#: templates/js/translated/stock.js:2108 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2074 +#: templates/js/translated/stock.js:2110 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2114 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2080 +#: templates/js/translated/stock.js:2116 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2085 +#: templates/js/translated/stock.js:2121 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2087 +#: templates/js/translated/stock.js:2123 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2089 +#: templates/js/translated/stock.js:2125 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2129 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2258 +#: templates/js/translated/stock.js:2294 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2305 +#: templates/js/translated/stock.js:2341 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2433 +#: templates/js/translated/stock.js:2469 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2573 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2692 +#: templates/js/translated/stock.js:2728 msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2810 +#: templates/js/translated/stock.js:2846 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2814 +#: templates/js/translated/stock.js:2850 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:2862 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2848 +#: templates/js/translated/stock.js:2884 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2865 +#: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2880 +#: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2897 +#: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2914 +#: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3005 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2977 +#: templates/js/translated/stock.js:3013 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:3049 +#: templates/js/translated/stock.js:3085 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139 +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:3161 +#: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:3182 +#: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:3183 +#: 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:3185 +#: 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:3186 +#: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:3187 +#: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:3188 +#: 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:3201 +#: templates/js/translated/stock.js:3237 msgid "Select part to install" msgstr "" -#: templates/js/translated/stock.js:3264 +#: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" msgstr "" -#: templates/js/translated/stock.js:3277 +#: templates/js/translated/stock.js:3313 msgid "Selected stock items" msgstr "" -#: templates/js/translated/stock.js:3281 +#: templates/js/translated/stock.js:3317 msgid "Change Stock Status" msgstr "" diff --git a/InvenTree/locale/hu/LC_MESSAGES/django.po b/InvenTree/locale/hu/LC_MESSAGES/django.po index b8fc4d3cfb..54614417f9 100644 --- a/InvenTree/locale/hu/LC_MESSAGES/django.po +++ b/InvenTree/locale/hu/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 04:05+0000\n" -"PO-Revision-Date: 2024-02-28 07:23\n" +"POT-Creation-Date: 2024-03-19 01:26+0000\n" +"PO-Revision-Date: 2024-03-19 11:51\n" "Last-Translator: \n" "Language-Team: Hungarian\n" "Language: hu_HU\n" @@ -30,20 +30,20 @@ msgstr "Nincs jogosultságod az adatok megtekintéséhez" msgid "Invalid unit provided ({unit})" msgstr "" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "Nincs érték megadva" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "{original} átváltása {unit}-ra sikertelen" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" msgstr "Hibás mennyiség" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" msgstr "Hibás mennyiség ({exc})" @@ -64,18 +64,18 @@ msgstr "Dátum megadása" #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 #: templates/js/translated/return_order.js:776 #: templates/js/translated/sales_order.js:1067 #: templates/js/translated/sales_order.js:1982 -#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 msgid "Notes" msgstr "Megjegyzések" @@ -132,42 +132,42 @@ msgstr "A megadott email domain nincs jóváhagyva." msgid "Registration is disabled." msgstr "Regisztráció le van tiltva." -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "Nem megfelelő mennyiség" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "Üres sorozatszám" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "Duplikált sorozatszám" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "Hibás tartomány: {group}" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "Csoport tartomány {group} több mint az engedélyezett ({expected_quantity})" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "Hibás csoport-sor: {group}" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "Nem található sorozatszám" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "Az egyedi sorozatszámok számának ({len(serials)}) meg kell egyeznie a mennyiséggel ({expected_quantity})" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "HTML tag-ek eltávolítása ebből az értékből" @@ -203,131 +203,135 @@ msgstr "A kiszolgáló üres választ adott" msgid "Supplied URL is not a valid image file" msgstr "A megadott URL nem egy érvényes kép fájl" -#: InvenTree/locales.py:16 +#: InvenTree/locales.py:18 msgid "Bulgarian" msgstr "Bolgár" -#: InvenTree/locales.py:17 +#: InvenTree/locales.py:19 msgid "Czech" msgstr "Cseh" -#: InvenTree/locales.py:18 +#: InvenTree/locales.py:20 msgid "Danish" msgstr "Dán" -#: InvenTree/locales.py:19 +#: InvenTree/locales.py:21 msgid "German" msgstr "Német" -#: InvenTree/locales.py:20 +#: InvenTree/locales.py:22 msgid "Greek" msgstr "Görög" -#: InvenTree/locales.py:21 +#: InvenTree/locales.py:23 msgid "English" msgstr "Angol" -#: InvenTree/locales.py:22 +#: InvenTree/locales.py:24 msgid "Spanish" msgstr "Spanyol" -#: InvenTree/locales.py:23 +#: InvenTree/locales.py:25 msgid "Spanish (Mexican)" msgstr "Spanyol (Mexikói)" -#: InvenTree/locales.py:24 +#: InvenTree/locales.py:26 msgid "Farsi / Persian" msgstr "Fárszi/Perzsa" -#: InvenTree/locales.py:25 +#: InvenTree/locales.py:27 msgid "Finnish" msgstr "Finn" -#: InvenTree/locales.py:26 +#: InvenTree/locales.py:28 msgid "French" msgstr "Francia" -#: InvenTree/locales.py:27 +#: InvenTree/locales.py:29 msgid "Hebrew" msgstr "Héber" -#: InvenTree/locales.py:28 +#: InvenTree/locales.py:30 msgid "Hindi" msgstr "Hindi" -#: InvenTree/locales.py:29 +#: InvenTree/locales.py:31 msgid "Hungarian" msgstr "Magyar" -#: InvenTree/locales.py:30 +#: InvenTree/locales.py:32 msgid "Italian" msgstr "Olasz" -#: InvenTree/locales.py:31 +#: InvenTree/locales.py:33 msgid "Japanese" msgstr "Japán" -#: InvenTree/locales.py:32 +#: InvenTree/locales.py:34 msgid "Korean" msgstr "Koreai" -#: InvenTree/locales.py:33 +#: InvenTree/locales.py:35 +msgid "Latvian" +msgstr "" + +#: InvenTree/locales.py:36 msgid "Dutch" msgstr "Holland" -#: InvenTree/locales.py:34 +#: InvenTree/locales.py:37 msgid "Norwegian" msgstr "Norvég" -#: InvenTree/locales.py:35 +#: InvenTree/locales.py:38 msgid "Polish" msgstr "Lengyel" -#: InvenTree/locales.py:36 +#: InvenTree/locales.py:39 msgid "Portuguese" msgstr "Portugál" -#: InvenTree/locales.py:37 +#: InvenTree/locales.py:40 msgid "Portuguese (Brazilian)" msgstr "Portugál (Brazíliai)" -#: InvenTree/locales.py:38 +#: InvenTree/locales.py:41 msgid "Russian" msgstr "Orosz" -#: InvenTree/locales.py:39 +#: InvenTree/locales.py:42 msgid "Slovak" msgstr "Szlovák" -#: InvenTree/locales.py:40 +#: InvenTree/locales.py:43 msgid "Slovenian" msgstr "Szlovén" -#: InvenTree/locales.py:41 +#: InvenTree/locales.py:44 msgid "Serbian" msgstr "Szerb" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:45 msgid "Swedish" msgstr "Svéd" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:46 msgid "Thai" msgstr "Tháj" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:47 msgid "Turkish" msgstr "Török" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:48 msgid "Vietnamese" msgstr "Vietnámi" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:49 msgid "Chinese (Simplified)" msgstr "Kínai (egyszerűsített)" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:50 msgid "Chinese (Traditional)" msgstr "Kínai (Hagyományos)" @@ -391,7 +395,7 @@ msgstr "Hiányzó fájl" msgid "Missing external link" msgstr "Hiányzó külső link" -#: InvenTree/models.py:559 stock/models.py:2446 +#: InvenTree/models.py:559 stock/models.py:2449 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -401,7 +405,7 @@ msgstr "Melléklet" msgid "Select file to attach" msgstr "Válaszd ki a mellekelni kívánt fájlt" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -432,13 +436,13 @@ msgstr "Megjegyzés" msgid "File comment" msgstr "Leírás, bővebb infó" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:3000 users/models.py:100 +#: templates/js/translated/stock.js:3036 users/models.py:100 msgid "User" msgstr "Felhasználó" @@ -479,10 +483,10 @@ msgstr "Duplikált nevek nem lehetnek ugyanazon szülő alatt" msgid "Invalid choice" msgstr "Érvénytelen választás" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -495,7 +499,7 @@ msgstr "Érvénytelen választás" #: templates/js/translated/company.js:1155 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Név" @@ -506,10 +510,10 @@ msgstr "Név" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -523,7 +527,7 @@ msgstr "Név" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -531,8 +535,8 @@ msgstr "Név" #: templates/js/translated/return_order.js:314 #: templates/js/translated/sales_order.js:802 #: templates/js/translated/sales_order.js:1812 -#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021 -#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "Leírás" @@ -545,7 +549,7 @@ msgid "parent" msgstr "szülő" #: InvenTree/models.py:916 templates/js/translated/part.js:2794 -#: templates/js/translated/stock.js:2721 +#: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Elérési út" @@ -581,7 +585,7 @@ msgstr "Kiszolgálóhiba" 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:4134 +#: InvenTree/serializers.py:62 part/models.py:4143 msgid "Must be a valid number" msgstr "Érvényes számnak kell lennie" @@ -596,89 +600,89 @@ msgstr "Pénznem" msgid "Select currency from available options" msgstr "Válassz pénznemet a lehetőségek közül" -#: InvenTree/serializers.py:436 +#: InvenTree/serializers.py:441 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:448 +#: InvenTree/serializers.py:453 msgid "Only superusers can create new users" msgstr "Csak a superuser-ek hozhatnak létre felhasználókat" -#: InvenTree/serializers.py:467 +#: InvenTree/serializers.py:472 msgid "Your account has been created." msgstr "A fiókod sikeresen létrejött." -#: InvenTree/serializers.py:469 +#: InvenTree/serializers.py:474 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:476 +#: InvenTree/serializers.py:481 msgid "Welcome to InvenTree" msgstr "Üdvözlet az InvenTree-ben" -#: InvenTree/serializers.py:537 +#: InvenTree/serializers.py:542 msgid "Filename" msgstr "Fájlnév" -#: InvenTree/serializers.py:571 +#: InvenTree/serializers.py:576 msgid "Invalid value" msgstr "Érvénytelen érték" -#: InvenTree/serializers.py:591 +#: InvenTree/serializers.py:596 msgid "Data File" msgstr "Adat fájl" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:597 msgid "Select data file for upload" msgstr "Fájl kiválasztása feltöltéshez" -#: InvenTree/serializers.py:609 +#: InvenTree/serializers.py:614 msgid "Unsupported file type" msgstr "Nem támogatott fájltípus" -#: InvenTree/serializers.py:615 +#: InvenTree/serializers.py:620 msgid "File is too large" msgstr "Fájl túl nagy" -#: InvenTree/serializers.py:636 +#: InvenTree/serializers.py:641 msgid "No columns found in file" msgstr "Nem találhatók oszlopok a fájlban" -#: InvenTree/serializers.py:639 +#: InvenTree/serializers.py:644 msgid "No data rows found in file" msgstr "Nincsenek adatsorok a fájlban" -#: InvenTree/serializers.py:752 +#: InvenTree/serializers.py:757 msgid "No data rows provided" msgstr "Nincs adatsor megadva" -#: InvenTree/serializers.py:755 +#: InvenTree/serializers.py:760 msgid "No data columns supplied" msgstr "Nincs adat oszlop megadva" -#: InvenTree/serializers.py:822 +#: InvenTree/serializers.py:827 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Szükséges oszlop hiányzik: '{name}'" -#: InvenTree/serializers.py:831 +#: InvenTree/serializers.py:836 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Duplikált oszlop: '{col}'" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:859 msgid "Remote Image" msgstr "Távoli kép" -#: InvenTree/serializers.py:855 +#: InvenTree/serializers.py:860 msgid "URL of remote image file" msgstr "A távoli kép URL-je" -#: InvenTree/serializers.py:873 +#: InvenTree/serializers.py:878 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:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "Háttér folyamat ellenőrzés sikertelen" @@ -818,7 +822,7 @@ msgstr "Szülő tételből szétválasztva" msgid "Split child item" msgstr "Szétválasztott gyermek tétel" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 msgid "Merged stock items" msgstr "Összevont készlet tétel" @@ -838,7 +842,7 @@ msgstr "Gyártási utasítás kimenete kész" msgid "Build order output rejected" msgstr "Gyártási utasítás kimenete elutasítva" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 msgid "Consumed by build order" msgstr "Gyártásra felhasználva" @@ -938,14 +942,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:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "Fogyóeszköz" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -960,7 +964,7 @@ msgid "Tracked" msgstr "Követett" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -985,7 +989,7 @@ msgstr "Elérhető" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "Gyártási utasítás" @@ -1014,7 +1018,7 @@ msgstr "Gyártási utasítás azonosító" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1044,11 +1048,11 @@ msgstr "Gyártás, amihez ez a gyártás hozzá van rendelve" #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1059,7 +1063,7 @@ msgstr "Gyártás, amihez ez a gyártás hozzá van rendelve" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:267 stock/serializers.py:689 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1086,9 +1090,9 @@ msgstr "Gyártás, amihez ez a gyártás hozzá van rendelve" #: templates/js/translated/sales_order.js:1598 #: templates/js/translated/sales_order.js:1796 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960 -#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054 -#: templates/js/translated/stock.js:3200 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 msgid "Part" msgstr "Alkatrész" @@ -1146,8 +1150,8 @@ msgstr "Gyártási állapot" msgid "Build status code" msgstr "Gyártás státusz kód" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Batch kód" @@ -1242,53 +1246,53 @@ msgstr "Projektszám" msgid "Project code for this build order" msgstr "Projekt kód a gyártáshoz" -#: build/models.py:559 +#: build/models.py:575 #, 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:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "Gyártási utasítás elkészült" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "Nincs gyártási kimenet megadva" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "Gyártási kimenet már kész" -#: build/models.py:789 +#: build/models.py:805 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:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 msgid "Quantity must be greater than zero" msgstr "Mennyiségnek nullánál többnek kell lennie" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 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:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" msgstr "Gyártás objektum" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1298,7 +1302,7 @@ msgstr "Gyártás objektum" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:463 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1310,7 +1314,7 @@ msgstr "Gyártás objektum" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1325,43 +1329,43 @@ msgstr "Gyártás objektum" #: templates/js/translated/sales_order.js:1698 #: templates/js/translated/sales_order.js:1824 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 -#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985 -#: templates/js/translated/stock.js:3068 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "Mennyiség" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" msgstr "Gyártáshoz szükséges mennyiség" -#: build/models.py:1381 +#: build/models.py:1397 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:1390 +#: build/models.py:1406 #, 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:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "Készlet túlfoglalva" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "Lefoglalt mennyiségnek nullánál többnek kell lennie" -#: build/models.py:1412 +#: build/models.py:1428 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:1473 +#: build/models.py:1489 msgid "Selected stock item does not match BOM line" msgstr "A készlet tétel nem egyezik az alkatrészjegyzékkel" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 @@ -1372,23 +1376,23 @@ msgstr "A készlet tétel nem egyezik az alkatrészjegyzékkel" #: templates/js/translated/sales_order.js:1605 #: templates/js/translated/sales_order.js:1692 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 -#: templates/js/translated/stock.js:2941 +#: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "Készlet tétel" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "Forrás készlet tétel" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "Készlet mennyiség amit foglaljunk a gyártáshoz" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "Beépítés ebbe" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "Cél készlet tétel" @@ -1425,8 +1429,8 @@ msgstr "Egész számú mennyiség szükséges az egyedi követésre kötelezett 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:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 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" @@ -1451,10 +1455,10 @@ msgstr "A következő sorozatszámok már léteznek vagy nem megfelelőek" msgid "A list of build outputs must be provided" msgstr "A gyártási kimenetek listáját meg kell adni" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1466,8 +1470,8 @@ msgstr "A gyártási kimenetek listáját meg kell adni" #: templates/js/translated/sales_order.js:1627 #: templates/js/translated/sales_order.js:1706 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164 -#: templates/js/translated/stock.js:2835 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 msgid "Location" msgstr "Hely" @@ -1493,16 +1497,16 @@ msgstr "A kész gyártási kimenetek helye" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 #: templates/js/translated/purchase_order.js:1723 #: templates/js/translated/return_order.js:331 #: templates/js/translated/sales_order.js:819 -#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959 -#: templates/js/translated/stock.js:3084 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 msgid "Status" msgstr "Állapot" @@ -1567,7 +1571,7 @@ msgstr "Fogadd el hogy a készlet tételek nincsenek teljesen lefoglalva ehhez a msgid "Required stock has not been fully allocated" msgstr "A szükséges készlet nem lett teljesen lefoglalva" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "Befejezetlenek elfogadása" @@ -1603,11 +1607,11 @@ msgstr "Gyártás sor tétel" 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:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1065 msgid "Item must be in stock" msgstr "A tételnek kell legyen készlete" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Rendelkezésre álló mennyiség ({q}) túllépve" @@ -1620,7 +1624,7 @@ msgstr "Gyártási kimenetet meg kell adni a követésre kötelezett alkatrésze 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:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "A lefoglalandó tételeket meg kell adni" @@ -1660,44 +1664,45 @@ msgstr "Opcionális tételek" msgid "Allocate optional BOM items to build order" msgstr "Opcionális tételek lefoglalása a gyártáshoz" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 #: stock/api.py:745 msgid "BOM Item" msgstr "Alkatrészjegyzék tétel" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "Lefoglalt készlet" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "Rendelve" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "Gyártásban" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "Elérhető készlet" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "A gyártási utasításhoz készlet szükséges" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "Késésben lévő gyártás" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "A {bo} gyártás most már késésben van" @@ -1863,7 +1868,7 @@ msgstr "Befejezett kimenetek" #: templates/js/translated/pricing.js:929 #: templates/js/translated/sales_order.js:769 #: templates/js/translated/sales_order.js:992 -#: templates/js/translated/stock.js:2888 +#: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "Vevői rendelés" @@ -1921,8 +1926,8 @@ msgstr "Lefoglalt alkatrészek" #: templates/js/translated/build.js:1377 #: templates/js/translated/model_renderers.js:235 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153 -#: templates/js/translated/stock.js:3091 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" @@ -1991,27 +1996,31 @@ msgstr "Szükséges alkatrészek rendelése" msgid "Order Parts" msgstr "Alkatrész rendelés" -#: build/templates/build/detail.html:210 +#: 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 "Befejezetlen gyártási kimenetek" -#: build/templates/build/detail.html:214 +#: build/templates/build/detail.html:219 msgid "Create new build output" msgstr "Új gyártási kimenet létrehozása" -#: build/templates/build/detail.html:215 +#: build/templates/build/detail.html:220 msgid "New Build Output" msgstr "Új gyártási kimenet" -#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "Felhasznált készlet" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "Befejezett gyártási kimenetek" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2027,15 +2036,15 @@ msgstr "Befejezett gyártási kimenetek" msgid "Attachments" msgstr "Mellékletek" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "Gyártási megjegyzések" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "Lefoglalás kész" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" msgstr "Minden sor rendben lefoglalva" @@ -2113,1390 +2122,1414 @@ msgstr "Projekt leírása" msgid "User or group responsible for this project" msgstr "A projektért felelős felhasználó vagy csoport" -#: common/models.py:737 +#: common/models.py:744 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:741 +#: common/models.py:748 msgid "Settings value" msgstr "Beállítás értéke" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "A kiválasztott érték nem egy érvényes lehetőség" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "Az érték bináris kell legyen" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "Az érték egész szám kell legyen" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "Kulcs string egyedi kell legyen" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "Nincs csoport" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "Üres domain nem engedélyezett." -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "Érvénytelen domain név: {domain}" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "Nincsen plugin" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "Újraindítás szükséges" -#: common/models.py:1231 +#: common/models.py:1238 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:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "Függőben levő migrációk" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "Függőben levő adatbázis migrációk" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "Kiszolgáló példány neve" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "String leíró a kiszolgáló példányhoz" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "Példány név használata" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "Példány név használata a címsorban" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "Verzió infók megjelenítésének tiltása" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "Verzió infók megjelenítése csak admin felhasználóknak" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "Cég neve" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "Belső cégnév" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "Kiindulási URL" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "Kiindulási URL a kiszolgáló példányhoz" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "Alapértelmezett pénznem" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "Válassz alap pénznemet az ár számításokhoz" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "Árfolyam frissítési gyakoriság" -#: common/models.py:1283 +#: common/models.py:1290 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:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "nap" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "Árfolyam frissítő plugin" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" msgstr "Kiválasztott árfolyam frissítő plugin" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "Letöltés URL-ről" -#: common/models.py:1298 +#: common/models.py:1305 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:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "Letöltési méret korlát" -#: common/models.py:1305 +#: common/models.py:1312 msgid "Maximum allowable download size for remote image" msgstr "Maximum megengedett letöltési mérete a távoli képeknek" -#: common/models.py:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "Felhasznált User-agent az URL-ről letöltéshez" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "Erős URL validáció" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "Sablon specifikáció igénylése az URL validálásnál" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "Megerősítés igénylése" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "Kérjen felhasználói megerősítést bizonyos műveletekhez" -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "Fa mélység" -#: common/models.py:1332 +#: common/models.py:1339 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:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "Frissítés keresés gyakorisága" -#: common/models.py:1339 +#: common/models.py:1346 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:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "Automatikus biztonsági mentés" -#: common/models.py:1346 +#: common/models.py:1353 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:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "Automata biztonsági mentés gyakorisága" -#: common/models.py:1352 +#: common/models.py:1359 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:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "Feladat törlési gyakoriság" -#: common/models.py:1360 +#: common/models.py:1367 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:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "Hibanapló törlési gyakoriság" -#: common/models.py:1369 +#: common/models.py:1376 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:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "Értesítés törlési gyakoriság" -#: common/models.py:1378 +#: common/models.py:1385 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:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Vonalkód támogatás" -#: common/models.py:1386 +#: common/models.py:1393 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:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "Vonalkód beadási késleltetés" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "Vonalkód beadáskor a feldolgozás késleltetési ideje" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "Webkamerás vonalkód olvasás" -#: common/models.py:1399 +#: common/models.py:1406 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:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "Alkatrész változatok" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" msgstr "Alkatrész változat vagy verziószám tulajdonság használata" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "IPN reguláris kifejezés" -#: common/models.py:1411 +#: common/models.py:1418 msgid "Regular expression pattern for matching Part IPN" msgstr "Reguláris kifejezés ami illeszkedik az alkatrész IPN-re" -#: common/models.py:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "Többször is előforduló IPN engedélyezése" -#: common/models.py:1415 +#: common/models.py:1422 msgid "Allow multiple parts to share the same IPN" msgstr "Azonos IPN használható legyen több alkatrészre is" -#: common/models.py:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "IPN szerkesztésének engedélyezése" -#: common/models.py:1421 +#: common/models.py:1428 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:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "Alkatrészjegyzék adatok másolása" -#: common/models.py:1427 +#: common/models.py:1434 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:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "Alkatrész paraméterek másolása" -#: common/models.py:1433 +#: common/models.py:1440 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:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "Alkatrész teszt adatok másolása" -#: common/models.py:1439 +#: common/models.py:1446 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:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "Kategória paraméter sablonok másolása" -#: common/models.py:1445 +#: common/models.py:1452 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:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "Sablon" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "Alkatrészek alapból sablon alkatrészek legyenek" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 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:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "Összetevő" -#: common/models.py:1463 +#: common/models.py:1470 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:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "Beszerezhető" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "Alkatrészek alapból beszerezhetők legyenek" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "Értékesíthető" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "Alkatrészek alapból eladhatók legyenek" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "Alkatrészek alapból követésre kötelezettek legyenek" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "Alkatrészek alapból virtuálisak legyenek" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "Importálás megjelenítése a nézetekben" -#: common/models.py:1493 +#: common/models.py:1500 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:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "Kapcsolódó alkatrészek megjelenítése" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" msgstr "Alkatrész kapcsolódó alkatrészeinek megjelenítése" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "Kezdeti készlet adatok" -#: common/models.py:1505 +#: common/models.py:1512 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:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Kezdeti beszállítói adatok" -#: common/models.py:1512 +#: common/models.py:1519 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:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "Alkatrész név megjelenítés formátuma" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "Formátum az alkatrész név megjelenítéséhez" -#: common/models.py:1525 +#: common/models.py:1532 msgid "Part Category Default Icon" msgstr "Alkatrész kategória alapértelmezett ikon" -#: common/models.py:1526 +#: common/models.py:1533 msgid "Part category default icon (empty means no icon)" msgstr "Alkatrész kategória alapértelmezett ikon (üres ha nincs)" -#: common/models.py:1530 +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "Csak választható mértékegységek" -#: common/models.py:1532 +#: common/models.py:1539 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:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "Áraknál használt tizedesjegyek min. száma" -#: common/models.py:1540 +#: common/models.py:1547 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:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "Áraknál használt tizedesjegyek max. száma" -#: common/models.py:1548 +#: common/models.py:1555 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:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "Beszállítói árazás használata" -#: common/models.py:1556 +#: 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:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "Beszerzési előzmények felülbírálása" -#: common/models.py:1564 +#: 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:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "Készlet tétel ár használata" -#: common/models.py:1572 +#: 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:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "Készlet tétel ár kora" -#: common/models.py:1580 +#: 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:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "Alkatrészváltozat árak használata" -#: common/models.py:1588 +#: 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:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "Csak az aktív változatokat" -#: common/models.py:1595 +#: 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:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "Árazás újraszámítás gyakoriság" -#: common/models.py:1603 +#: 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:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "Belső árak" -#: common/models.py:1611 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "Alkatrészekhez belső ár engedélyezése" -#: common/models.py:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "Belső ár felülbírálása" -#: common/models.py:1618 +#: 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:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "Címke nyomtatás engedélyezése" -#: common/models.py:1625 +#: 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:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "Címke kép DPI" -#: common/models.py:1632 +#: 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:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "Riportok engedélyezése" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "Riportok előállításának engedélyezése" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "Debug mód" -#: common/models.py:1645 +#: 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:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: 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:202 msgid "Page Size" msgstr "Lapméret" -#: common/models.py:1651 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "Alapértelmezett lapméret a PDF riportokhoz" -#: common/models.py:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "Teszt riportok engedélyezése" -#: common/models.py:1657 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "Teszt riportok előállításának engedélyezése" -#: common/models.py:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "Teszt riportok hozzáadása" -#: common/models.py:1664 +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "Globálisan egyedi sorozatszámok" -#: common/models.py:1671 +#: 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:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "Sorozatszámok automatikus kitöltése" -#: common/models.py:1677 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "Sorozatszámok automatikus kitöltése a formokon" -#: common/models.py:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "Kimerült készlet törlése" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "Alapértelmezett művelet mikor a készlet tétel elfogy" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "Batch kód sablon" -#: common/models.py:1692 +#: 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:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "Készlet lejárata" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "Készlet lejárat kezelésének engedélyezése" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "Lejárt készlet értékesítése" -#: common/models.py:1704 +#: 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:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "Álló készlet ideje" -#: common/models.py:1711 +#: 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:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "Lejárt készlet gyártása" -#: common/models.py:1719 +#: 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:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "Készlet tulajdonosok kezelése" -#: common/models.py:1725 +#: 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:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "Hely alapértelmezett ikon" -#: common/models.py:1731 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "Hely alapértelmezett ikon (üres ha nincs)" -#: common/models.py:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "Beépített készlet megjelenítése" -#: common/models.py:1736 +#: 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:1741 +#: 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 "Build Order Reference Pattern" msgstr "Gyártási utasítás azonosító minta" -#: common/models.py:1743 +#: common/models.py:1764 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:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "Visszavétel engedélyezése" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "Visszavételek engedélyezése a felületen" -#: common/models.py:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "Visszavétel azonosító minta" -#: common/models.py:1757 +#: common/models.py:1778 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" +msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "Befejezett visszavétel szerkesztése" -#: common/models.py:1765 +#: common/models.py:1786 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:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "Vevői rendelés azonosító minta" -#: common/models.py:1773 +#: common/models.py:1794 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:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "Vevői rendeléshez alapértelmezett szállítmány" -#: common/models.py:1780 +#: common/models.py:1801 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:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "Befejezett vevői rendelés szerkesztése" -#: common/models.py:1787 +#: common/models.py:1808 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:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "Beszerzési rendelés azonosító minta" -#: common/models.py:1795 +#: common/models.py:1816 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:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "Befejezett beszerzési rendelés szerkesztése" -#: common/models.py:1803 +#: common/models.py:1824 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:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "Beszerzési rendelések automatikus befejezése" -#: common/models.py:1811 +#: common/models.py:1832 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:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "Elfelejtett jelszó engedélyezése" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" msgstr "Elfelejtett jelszó funkció engedélyezése a bejentkező oldalon" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "Regisztráció engedélyezése" -#: common/models.py:1825 +#: common/models.py:1846 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:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "SSO engedélyezése" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "SSO engedélyezése a bejelentkező oldalon" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "SSO regisztráció engedélyezése" -#: common/models.py:1838 +#: common/models.py:1859 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:1844 +#: common/models.py:1865 msgid "Email required" msgstr "Email szükséges" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "Kötelező email megadás regisztrációkor" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "SSO felhasználók automatikus kitöltése" -#: common/models.py:1852 +#: common/models.py:1873 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:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "Email kétszer" -#: common/models.py:1859 +#: common/models.py:1880 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:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "Jelszó kétszer" -#: common/models.py:1865 +#: common/models.py:1886 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:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "Engedélyezett domainek" -#: common/models.py:1872 +#: common/models.py:1893 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:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "Csoport regisztráláskor" -#: common/models.py:1879 +#: common/models.py:1900 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:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "Többfaktoros hitelesítés kényszerítése" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "A felhasználóknak többfaktoros hitelesítést kell használniuk." -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "Pluginok ellenőrzése indításkor" -#: common/models.py:1892 +#: common/models.py:1913 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:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "Plugin frissítések ellenőrzése" -#: common/models.py:1901 +#: common/models.py:1922 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:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "URL integráció engedélyezése" -#: common/models.py:1908 +#: common/models.py:1929 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:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "Navigációs integráció engedélyezése" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "Navigációs integráció engedélyezése a pluginok számára" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "App integráció engedélyezése" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "App hozzáadásának engedélyezése a pluginok számára" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "Ütemezés integráció engedélyezése" -#: common/models.py:1929 +#: common/models.py:1950 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:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "Esemény integráció engedélyezése" -#: common/models.py:1936 +#: common/models.py:1957 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:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "Projektszámok engedélyezése" -#: common/models.py:1943 +#: common/models.py:1964 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:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "Leltár funkció" -#: common/models.py:1950 +#: common/models.py:1971 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:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "Külső helyek nélkül" -#: common/models.py:1958 +#: common/models.py:1979 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:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "Automatikus leltár időpontja" -#: common/models.py:1966 +#: common/models.py:1987 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:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "Riport törlési gyakoriság" -#: common/models.py:1974 +#: common/models.py:1995 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:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "Felhasználók teljes nevének megjelenítése" -#: common/models.py:1982 +#: common/models.py:2003 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:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2029 common/models.py:2429 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:2043 +#: common/models.py:2070 msgid "Hide inactive parts" msgstr "Inaktív alkatrészek elrejtése" -#: common/models.py:2045 +#: common/models.py:2072 msgid "Hide inactive parts in results displayed on the homepage" msgstr "Nem aktív alkatrészek elrejtése a kezdőlapon" -#: common/models.py:2051 +#: common/models.py:2078 msgid "Show subscribed parts" msgstr "Értesítésre beállított alkatrészek megjelenítése" -#: common/models.py:2052 +#: common/models.py:2079 msgid "Show subscribed parts on the homepage" msgstr "Alkatrész értesítések megjelenítése a főoldalon" -#: common/models.py:2057 +#: common/models.py:2084 msgid "Show subscribed categories" msgstr "Értesítésre beállított kategóriák megjelenítése" -#: common/models.py:2058 +#: common/models.py:2085 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:2063 +#: common/models.py:2090 msgid "Show latest parts" msgstr "Legújabb alkatrészek megjelenítése" -#: common/models.py:2064 +#: common/models.py:2091 msgid "Show latest parts on the homepage" msgstr "Legújabb alkatrészek megjelenítése a főoldalon" -#: common/models.py:2069 +#: common/models.py:2096 msgid "Show unvalidated BOMs" msgstr "Jóváhagyás nélküli alkatrészjegyzékek megjelenítése" -#: common/models.py:2070 +#: common/models.py:2097 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:2075 +#: common/models.py:2102 msgid "Show recent stock changes" msgstr "Legfrissebb készlet változások megjelenítése" -#: common/models.py:2076 +#: common/models.py:2103 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:2081 +#: common/models.py:2108 msgid "Show low stock" msgstr "Alacsony készlet megjelenítése" -#: common/models.py:2082 +#: common/models.py:2109 msgid "Show low stock items on the homepage" msgstr "Alacsony készletek megjelenítése a főoldalon" -#: common/models.py:2087 +#: common/models.py:2114 msgid "Show depleted stock" msgstr "Kimerült készlet megjelenítése" -#: common/models.py:2088 +#: common/models.py:2115 msgid "Show depleted stock items on the homepage" msgstr "Kimerült készletek megjelenítése a főoldalon" -#: common/models.py:2093 +#: common/models.py:2120 msgid "Show needed stock" msgstr "Gyártáshoz szükséges készlet megjelenítése" -#: common/models.py:2094 +#: common/models.py:2121 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:2099 +#: common/models.py:2126 msgid "Show expired stock" msgstr "Lejárt készlet megjelenítése" -#: common/models.py:2100 +#: common/models.py:2127 msgid "Show expired stock items on the homepage" msgstr "Lejárt készletek megjelenítése a főoldalon" -#: common/models.py:2105 +#: common/models.py:2132 msgid "Show stale stock" msgstr "Állott készlet megjelenítése" -#: common/models.py:2106 +#: common/models.py:2133 msgid "Show stale stock items on the homepage" msgstr "Álló készletek megjelenítése a főoldalon" -#: common/models.py:2111 +#: common/models.py:2138 msgid "Show pending builds" msgstr "Függő gyártások megjelenítése" -#: common/models.py:2112 +#: common/models.py:2139 msgid "Show pending builds on the homepage" msgstr "Folyamatban lévő gyártások megjelenítése a főoldalon" -#: common/models.py:2117 +#: common/models.py:2144 msgid "Show overdue builds" msgstr "Késésben lévő gyártások megjelenítése" -#: common/models.py:2118 +#: common/models.py:2145 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:2123 +#: common/models.py:2150 msgid "Show outstanding POs" msgstr "Kintlévő beszerzési rendelések megjelenítése" -#: common/models.py:2124 +#: common/models.py:2151 msgid "Show outstanding POs on the homepage" msgstr "Kintlévő beszerzési rendelések megjelenítése a főoldalon" -#: common/models.py:2129 +#: common/models.py:2156 msgid "Show overdue POs" msgstr "Késésben lévő megrendelések megjelenítése" -#: common/models.py:2130 +#: common/models.py:2157 msgid "Show overdue POs on the homepage" msgstr "Késésben lévő megrendelések megjelenítése a főoldalon" -#: common/models.py:2135 +#: common/models.py:2162 msgid "Show outstanding SOs" msgstr "Függő vevői rendelések megjelenítése" -#: common/models.py:2136 +#: common/models.py:2163 msgid "Show outstanding SOs on the homepage" msgstr "Függő vevői rendelések megjelenítése a főoldalon" -#: common/models.py:2141 +#: common/models.py:2168 msgid "Show overdue SOs" msgstr "Késésben lévő vevői rendelések megjelenítése" -#: common/models.py:2142 +#: common/models.py:2169 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:2147 +#: common/models.py:2174 msgid "Show pending SO shipments" msgstr "Függő vevői szállítmányok megjelenítése" -#: common/models.py:2148 +#: common/models.py:2175 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:2153 +#: common/models.py:2180 msgid "Show News" msgstr "Hírek megjelenítése" -#: common/models.py:2154 +#: common/models.py:2181 msgid "Show news on the homepage" msgstr "Hírek megjelenítése a főoldalon" -#: common/models.py:2159 +#: common/models.py:2186 msgid "Inline label display" msgstr "Beágyazott címke megjelenítés" -#: common/models.py:2161 +#: common/models.py:2188 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:2167 +#: common/models.py:2194 msgid "Default label printer" msgstr "Alapértelmezett címkenyomtató" -#: common/models.py:2169 +#: common/models.py:2196 msgid "Configure which label printer should be selected by default" msgstr "Melyik címkenyomtató legyen az alapértelmezett" -#: common/models.py:2175 +#: common/models.py:2202 msgid "Inline report display" msgstr "Beágyazott riport megjelenítés" -#: common/models.py:2177 +#: common/models.py:2204 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:2183 +#: common/models.py:2210 msgid "Search Parts" msgstr "Alkatrészek keresése" -#: common/models.py:2184 +#: common/models.py:2211 msgid "Display parts in search preview window" msgstr "Alkatrészek megjelenítése a keresési előnézetben" -#: common/models.py:2189 +#: common/models.py:2216 msgid "Search Supplier Parts" msgstr "Beszállítói alkatrészek keresése" -#: common/models.py:2190 +#: common/models.py:2217 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:2195 +#: common/models.py:2222 msgid "Search Manufacturer Parts" msgstr "Gyártói alkatrészek keresése" -#: common/models.py:2196 +#: common/models.py:2223 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:2201 +#: common/models.py:2228 msgid "Hide Inactive Parts" msgstr "Inaktív alkatrészek elrejtése" -#: common/models.py:2202 +#: common/models.py:2229 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:2207 +#: common/models.py:2234 msgid "Search Categories" msgstr "Kategóriák keresése" -#: common/models.py:2208 +#: common/models.py:2235 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:2213 +#: common/models.py:2240 msgid "Search Stock" msgstr "Készlet keresése" -#: common/models.py:2214 +#: common/models.py:2241 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:2219 +#: common/models.py:2246 msgid "Hide Unavailable Stock Items" msgstr "Nem elérhető készlet tételek elrejtése" -#: common/models.py:2221 +#: common/models.py:2248 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:2227 +#: common/models.py:2254 msgid "Search Locations" msgstr "Helyek keresése" -#: common/models.py:2228 +#: common/models.py:2255 msgid "Display stock locations in search preview window" msgstr "Készlet helyek megjelenítése a keresési előnézetben" -#: common/models.py:2233 +#: common/models.py:2260 msgid "Search Companies" msgstr "Cégek keresése" -#: common/models.py:2234 +#: common/models.py:2261 msgid "Display companies in search preview window" msgstr "Cégek megjelenítése a keresési előnézetben" -#: common/models.py:2239 +#: common/models.py:2266 msgid "Search Build Orders" msgstr "Gyártási utasítások keresése" -#: common/models.py:2240 +#: common/models.py:2267 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:2245 +#: common/models.py:2272 msgid "Search Purchase Orders" msgstr "Beszerzési rendelések keresése" -#: common/models.py:2246 +#: common/models.py:2273 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:2251 +#: common/models.py:2278 msgid "Exclude Inactive Purchase Orders" msgstr "Inaktív beszerzési rendelések kihagyása" -#: common/models.py:2253 +#: common/models.py:2280 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:2259 +#: common/models.py:2286 msgid "Search Sales Orders" msgstr "Vevői rendelések keresése" -#: common/models.py:2260 +#: common/models.py:2287 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:2265 +#: common/models.py:2292 msgid "Exclude Inactive Sales Orders" msgstr "Inaktív vevői rendelések kihagyása" -#: common/models.py:2267 +#: common/models.py:2294 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:2273 +#: common/models.py:2300 msgid "Search Return Orders" msgstr "Visszavétel keresése" -#: common/models.py:2274 +#: common/models.py:2301 msgid "Display return orders in search preview window" msgstr "Visszavételek megjelenítése a keresés előnézet ablakban" -#: common/models.py:2279 +#: common/models.py:2306 msgid "Exclude Inactive Return Orders" msgstr "Inaktív visszavételek kihagyása" -#: common/models.py:2281 +#: common/models.py:2308 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:2287 +#: common/models.py:2314 msgid "Search Preview Results" msgstr "Keresési előnézet eredményei" -#: common/models.py:2289 +#: common/models.py:2316 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:2295 +#: common/models.py:2322 msgid "Regex Search" msgstr "Regex keresés" -#: common/models.py:2296 +#: common/models.py:2323 msgid "Enable regular expressions in search queries" msgstr "Reguláris kifejezések engedélyezése a keresésekben" -#: common/models.py:2301 +#: common/models.py:2328 msgid "Whole Word Search" msgstr "Teljes szó keresés" -#: common/models.py:2302 +#: common/models.py:2329 msgid "Search queries return results for whole word matches" msgstr "A keresések csak teljes szóra egyező találatokat adjanak" -#: common/models.py:2307 +#: common/models.py:2334 msgid "Show Quantity in Forms" msgstr "Mennyiség megjelenítése a formokon" -#: common/models.py:2308 +#: common/models.py:2335 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:2313 +#: common/models.py:2340 msgid "Escape Key Closes Forms" msgstr "ESC billentyű zárja be a formot" -#: common/models.py:2314 +#: common/models.py:2341 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:2319 +#: common/models.py:2346 msgid "Fixed Navbar" msgstr "Rögzített menüsor" -#: common/models.py:2320 +#: common/models.py:2347 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:2325 +#: common/models.py:2352 msgid "Date Format" msgstr "Dátum formátum" -#: common/models.py:2326 +#: common/models.py:2353 msgid "Preferred format for displaying dates" msgstr "Preferált dátum formátum a dátumok kijelzésekor" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2366 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Alkatrész ütemezés" -#: common/models.py:2340 +#: common/models.py:2367 msgid "Display part scheduling information" msgstr "Alkatrész ütemezési információk megjelenítése" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2372 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Alkatrész leltár" -#: common/models.py:2347 +#: common/models.py:2374 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:2353 +#: common/models.py:2380 msgid "Table String Length" msgstr "Táblázati szöveg hossz" -#: common/models.py:2355 +#: common/models.py:2382 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:2361 +#: common/models.py:2388 msgid "Default part label template" msgstr "Alapértelmezett alkatrész címke sablon" -#: common/models.py:2362 +#: common/models.py:2389 msgid "The part label template to be automatically selected" msgstr "Az alapértelmezetten kiválasztott alkatrész címke sablon" -#: common/models.py:2367 +#: common/models.py:2394 msgid "Default stock item template" msgstr "Alapértelmezett készlet címke sablon" -#: common/models.py:2369 +#: common/models.py:2396 msgid "The stock item label template to be automatically selected" msgstr "Az alapértelmezetten kiválasztott készlet címke sablon" -#: common/models.py:2375 +#: common/models.py:2402 msgid "Default stock location label template" msgstr "Alapértelmezett készlethely címke sablon" -#: common/models.py:2377 +#: common/models.py:2404 msgid "The stock location label template to be automatically selected" msgstr "Az alapértelmezetten kiválasztott készlethely címke sablon" -#: common/models.py:2383 +#: common/models.py:2410 msgid "Receive error reports" msgstr "Hibariportok fogadása" -#: common/models.py:2384 +#: common/models.py:2411 msgid "Receive notifications for system errors" msgstr "Értesítések fogadása a rendszerhibákról" -#: common/models.py:2389 +#: common/models.py:2416 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2417 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2460 msgid "Price break quantity" msgstr "Ársáv mennyiség" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3504,23 +3537,23 @@ msgstr "Ársáv mennyiség" msgid "Price" msgstr "Ár" -#: common/models.py:2441 +#: common/models.py:2468 msgid "Unit price at specified quantity" msgstr "Egységár egy meghatározott mennyiség esetén" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2639 common/models.py:2824 msgid "Endpoint" msgstr "Végpont" -#: common/models.py:2613 +#: common/models.py:2640 msgid "Endpoint at which this webhook is received" msgstr "Végpont ahol ez a webhook érkezik" -#: common/models.py:2623 +#: common/models.py:2650 msgid "Name for this webhook" msgstr "Webhook neve" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3530,101 +3563,101 @@ msgstr "Webhook neve" msgid "Active" msgstr "Aktív" -#: common/models.py:2627 +#: common/models.py:2654 msgid "Is this webhook active" msgstr "Aktív-e ez a webhook" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2670 users/models.py:148 msgid "Token" msgstr "Token" -#: common/models.py:2644 +#: common/models.py:2671 msgid "Token for access" msgstr "Token a hozzáféréshez" -#: common/models.py:2652 +#: common/models.py:2679 msgid "Secret" msgstr "Titok" -#: common/models.py:2653 +#: common/models.py:2680 msgid "Shared secret for HMAC" msgstr "Megosztott titok a HMAC-hoz" -#: common/models.py:2761 +#: common/models.py:2788 msgid "Message ID" msgstr "Üzenet azonosító" -#: common/models.py:2762 +#: common/models.py:2789 msgid "Unique identifier for this message" msgstr "Egyedi azonosító ehhez az üzenethez" -#: common/models.py:2770 +#: common/models.py:2797 msgid "Host" msgstr "Kiszolgáló" -#: common/models.py:2771 +#: common/models.py:2798 msgid "Host from which this message was received" msgstr "Kiszolgáló ahonnan ez az üzenet érkezett" -#: common/models.py:2779 +#: common/models.py:2806 msgid "Header" msgstr "Fejléc" -#: common/models.py:2780 +#: common/models.py:2807 msgid "Header of this message" msgstr "Üzenet fejléce" -#: common/models.py:2787 +#: common/models.py:2814 msgid "Body" msgstr "Törzs" -#: common/models.py:2788 +#: common/models.py:2815 msgid "Body of this message" msgstr "Üzenet törzse" -#: common/models.py:2798 +#: common/models.py:2825 msgid "Endpoint on which this message was received" msgstr "Végpont amin ez az üzenet érkezett" -#: common/models.py:2803 +#: common/models.py:2830 msgid "Worked on" msgstr "Dolgozott rajta" -#: common/models.py:2804 +#: common/models.py:2831 msgid "Was the work on this message finished?" msgstr "Befejeződött a munka ezzel az üzenettel?" -#: common/models.py:2930 +#: common/models.py:2957 msgid "Id" msgstr "Id" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2959 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "Cím" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2963 templates/js/translated/news.js:60 msgid "Published" msgstr "Közzétéve" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2965 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2967 templates/js/translated/news.js:52 msgid "Summary" msgstr "Összefoglaló" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Read" msgstr "Elolvasva" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Was this news item read?" msgstr "Elolvasva?" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2987 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3634,31 +3667,31 @@ msgstr "Elolvasva?" msgid "Image" msgstr "Kép" -#: common/models.py:2960 +#: common/models.py:2987 msgid "Image file" msgstr "Képfájl" -#: common/models.py:3002 +#: common/models.py:3029 msgid "Unit name must be a valid identifier" msgstr "A mértékegységnek valós azonosítónak kell lennie" -#: common/models.py:3021 +#: common/models.py:3048 msgid "Unit name" msgstr "Egység neve" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "Szimbólum" -#: common/models.py:3029 +#: common/models.py:3056 msgid "Optional unit symbol" msgstr "Opcionális mértékegység szimbólum" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "Definíció" -#: common/models.py:3037 +#: common/models.py:3064 msgid "Unit definition" msgstr "Mértékegység definíció" @@ -3962,7 +3995,7 @@ msgid "Link to address information (external)" msgstr "Link a címinformációkhoz (külső)" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Kiindulási alkatrész" @@ -3973,7 +4006,7 @@ msgstr "Válassz alkatrészt" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3988,7 +4021,7 @@ msgid "Select manufacturer" msgstr "Gyártó kiválasztása" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4023,9 +4056,9 @@ msgstr "Paraméter neve" #: company/models.py:615 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2438 templates/js/translated/company.js:1156 +#: stock/models.py:2441 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1519 msgid "Value" msgstr "Érték" @@ -4034,7 +4067,7 @@ msgid "Parameter value" msgstr "Paraméter értéke" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4060,7 +4093,7 @@ msgstr "Kapcsolódó gyártói alkatrésznek ugyanarra a kiindulási alkatrészr #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4077,7 +4110,7 @@ msgstr "Beszállító" msgid "Select supplier" msgstr "Beszállító kiválasztása" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "Beszállítói cikkszám" @@ -4094,13 +4127,13 @@ msgid "Supplier part description" msgstr "Beszállítói alkatrész leírása" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:579 msgid "Note" msgstr "Megjegyzés" @@ -4113,10 +4146,10 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "Minimális díj (pl. tárolási díj)" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 -#: templates/js/translated/stock.js:2387 +#: templates/js/translated/stock.js:2423 msgid "Packaging" msgstr "Csomagolás" @@ -4158,7 +4191,7 @@ msgstr "Elérhetőség frissítve" msgid "Date of last update of availability data" msgstr "Utolsó elérhetőségi adat frissítés" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "Beszállító által használt alapértelmezett pénznem" @@ -4219,13 +4252,13 @@ msgstr "Kép törlése" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1100 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 #: templates/js/translated/return_order.js:296 #: templates/js/translated/sales_order.js:784 -#: templates/js/translated/stock.js:2923 +#: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:804 msgid "Customer" msgstr "Vevő" @@ -4430,8 +4463,9 @@ 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/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "Beszállítók" @@ -4483,7 +4517,7 @@ msgstr "Címek" #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2243 +#: templates/js/translated/stock.js:2279 msgid "Supplier Part" msgstr "Beszállítói alkatrész" @@ -4529,7 +4563,7 @@ 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:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4578,15 +4612,17 @@ msgstr "Vonalkód hozzárendelése a beszállítói alkatrészhez" msgid "Update Part Availability" msgstr "Alkatrész elérhetőség frissítése" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 -#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:193 msgid "Stock Items" msgstr "Készlet tételek" @@ -4640,8 +4676,8 @@ msgstr "Címke" msgid "Label template file" msgstr "Címke sablon fájl" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "Engedélyezve" @@ -4666,7 +4702,7 @@ msgstr "Magasság [mm]" msgid "Label height, specified in mm" msgstr "Címke magassága, mm-ben" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "Fájlnév minta" @@ -4680,8 +4716,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "Lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok)" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "Szűrők" @@ -4822,7 +4858,7 @@ msgstr "Nincs egyező beszerzési rendelés" #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1674 -#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "Beszerzési rendelés" @@ -4831,7 +4867,7 @@ msgstr "Beszerzési rendelés" #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 -#: templates/js/translated/stock.js:2905 +#: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "Visszavétel" @@ -4839,11 +4875,11 @@ msgstr "Visszavétel" msgid "Total price for this order" msgstr "A rendelés teljes ára" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "Rendelés pénzneme" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 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)" @@ -5030,9 +5066,9 @@ msgstr "Beérkezett" msgid "Number of items received" msgstr "Érkezett tételek száma" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2274 +#: templates/js/translated/stock.js:2310 msgid "Purchase Price" msgstr "Beszerzési ár" @@ -5085,8 +5121,8 @@ msgstr "Ellenőrizte" msgid "User who checked this shipment" msgstr "Felhasználó aki ellenőrizte ezt a szállítmányt" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "Szállítmány" @@ -5134,7 +5170,7 @@ msgstr "Nem foglalható készlet egy olyan sorhoz amiben nincs alkatrész" msgid "Allocation quantity cannot exceed stock quantity" msgstr "A lefoglalandó mennyiség nem haladhatja meg a készlet mennyiségét" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 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" @@ -5208,159 +5244,159 @@ msgstr "Sortétel végső kimenetele" 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:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "A rendelést nem lehet törölni" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 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:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "A rendelésben teljesítetlen sortételek vannak" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "A rendelés nem nyitott" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "Beszérzési ár pénzneme" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "Beszállítói alkatrészt meg kell adni" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "Beszerzési rendelést meg kell adni" -#: order/serializers.py:478 +#: order/serializers.py:500 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:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "A beszerzési rendelésnek egyeznie kell a beszállítóval" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "Sortétel" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "Sortétel nem egyezik a beszerzési megrendeléssel" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "Válassz cél helyet a beérkezett tételeknek" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 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:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 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:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Vonalkód" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "Beolvasott vonalkód" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "Ez a vonalkód már használva van" -#: order/serializers.py:610 +#: order/serializers.py:632 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:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "Sortételt meg kell adni" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "A cél helyet kötelező megadni" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "Megadott vonalkódoknak egyedieknek kel lenniük" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "Eladási ár pénzneme" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "Nincsenek szállítmány részletek megadva" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "Sortétel nincs hozzárendelve ehhez a rendeléshez" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "Mennyiség pozitív kell legyen" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "Írd be a sorozatszámokat a kiosztáshoz" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "Szállítmány kiszállítva" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "Szállítmány nincs hozzárendelve ehhez a rendeléshez" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "Nincs találat a következő sorozatszámokra" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "A következő sorozatszámok már ki lettek osztva" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "Visszavétel sortétel" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" msgstr "Sortétel nem egyezik a visszavétellel" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "A sortétel már beérkezett" -#: order/serializers.py:1655 +#: order/serializers.py:1677 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:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "Sortétel pénzneme" @@ -5734,7 +5770,7 @@ msgid "Pending Shipments" msgstr "Függő szállítmányok" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "Műveletek" @@ -5764,12 +5800,12 @@ 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:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "Alkatrész ID" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "Alkatrész neve" @@ -5781,12 +5817,12 @@ msgstr "Alkatrész leírása" #: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 -#: templates/js/translated/stock.js:1999 +#: templates/js/translated/stock.js:2035 msgid "IPN" msgstr "IPN" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "Változat" @@ -5862,10 +5898,10 @@ msgstr "Szülő neve" msgid "Category Path" msgstr "Kategória elérési út" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -5886,17 +5922,17 @@ msgstr "Alkatrészjegyzék tétel ID" msgid "Parent IPN" msgstr "Szülő IPN" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3897 msgid "Part IPN" msgstr "Alkatrész IPN" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "Minimum ár" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5974,8 +6010,8 @@ msgstr "Teljes alkatrészjegyzék jóváhagyása" msgid "This option must be selected" msgstr "Ennek az opciónak ki kll lennie választva" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5983,12 +6019,17 @@ msgstr "Ennek az opciónak ki kll lennie választva" msgid "Category" msgstr "Kategória" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Alapértelmezett hely" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "Teljes készlet" @@ -5996,7 +6037,7 @@ msgstr "Teljes készlet" msgid "Input quantity for price calculation" msgstr "Add meg a mennyiséget az árszámításhoz" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Alkatrész kategória" @@ -6011,7 +6052,8 @@ msgstr "Alkatrész kategóriák" msgid "Default location for parts in this category" msgstr "Ebben a kategóriában lévő alkatrészek helye alapban" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 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" @@ -6077,7 +6119,7 @@ msgstr "Ilyen nevű, IPN-ű és reviziójú alkatrész már létezik." msgid "Parts cannot be assigned to structural part categories!" msgstr "Szerkezeti kategóriákhoz nem lehet alkatrészeket rendelni!" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3896 msgid "Part name" msgstr "Alkatrész neve" @@ -6359,7 +6401,7 @@ msgstr "Teljes készlet a leltárkor" #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1732 -#: templates/js/translated/stock.js:2785 +#: templates/js/translated/stock.js:2821 msgid "Date" msgstr "Dátum" @@ -6411,586 +6453,602 @@ msgstr "Leltározott alkatrészek száma" msgid "User who requested this stocktake report" msgstr "Felhasználó aki a leltár riportot kérte" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 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:3448 -msgid "Test with this name already exists for this part" -msgstr "Erre az alkatrészre már létezik teszt ilyen névvel" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" +msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "Teszt név" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "Add meg a teszt nevét" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "Teszt leírása" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "Adj hozzá egy leírást ehhez a teszthez" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Kötelező" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "Szükséges-e hogy ez a teszt sikeres legyen?" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "Kötelező érték" -#: part/models.py:3496 +#: part/models.py:3505 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:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "Kötelező melléklet" -#: part/models.py:3503 +#: part/models.py:3512 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:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "Jelölőnégyzet paraméternek nem lehet mértékegysége" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "Jelölőnégyzet paraméternek nem lehetnek választási lehetőségei" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "A lehetőségek egyediek kell legyenek" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "A paraméter sablon nevének egyedinek kell lennie" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "Paraméter neve" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "Paraméter mértékegysége" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "Paraméter leírása" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "Jelölőnégyzet" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "Ez a paraméter egy jelölőnégyzet?" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "Lehetőségek" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "Választható lehetőségek (vesszővel elválasztva)" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "Hibás választás a paraméterre" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "Szülő alkatrész" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "Paraméter sablon" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "Adat" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "Paraméter értéke" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "Alapértelmezett érték" -#: part/models.py:3847 +#: part/models.py:3856 msgid "Default Parameter Value" msgstr "Alapértelmezett paraméter érték" -#: part/models.py:3885 +#: part/models.py:3894 msgid "Part ID or part name" msgstr "Alkatrész ID vagy alkatrész név" -#: part/models.py:3886 +#: part/models.py:3895 msgid "Unique part ID value" msgstr "Egyedi alkatrész ID értéke" -#: part/models.py:3888 +#: part/models.py:3897 msgid "Part IPN value" msgstr "Alkatrész IPN érték" -#: part/models.py:3889 +#: part/models.py:3898 msgid "Level" msgstr "Szint" -#: part/models.py:3889 +#: part/models.py:3898 msgid "BOM level" msgstr "Alkatrészjegyzék szint" -#: part/models.py:3979 +#: part/models.py:3988 msgid "Select parent part" msgstr "Szülő alkatrész kiválasztása" -#: part/models.py:3989 +#: part/models.py:3998 msgid "Sub part" msgstr "Al alkatrész" -#: part/models.py:3990 +#: part/models.py:3999 msgid "Select part to be used in BOM" msgstr "Válaszd ki az alkatrészjegyzékben használandó alkatrészt" -#: part/models.py:4001 +#: part/models.py:4010 msgid "BOM quantity for this BOM item" msgstr "Alkatrészjegyzék mennyiség ehhez az alkatrészjegyzék tételhez" -#: part/models.py:4007 +#: part/models.py:4016 msgid "This BOM item is optional" msgstr "Ez az alkatrészjegyzék tétel opcionális" -#: part/models.py:4013 +#: part/models.py:4022 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:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4029 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Többlet" -#: part/models.py:4021 +#: part/models.py:4030 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:4028 +#: part/models.py:4037 msgid "BOM item reference" msgstr "Alkatrészjegyzék tétel azonosító" -#: part/models.py:4036 +#: part/models.py:4045 msgid "BOM item notes" msgstr "Alkatrészjegyzék tétel megjegyzései" -#: part/models.py:4042 +#: part/models.py:4051 msgid "Checksum" msgstr "Ellenőrző összeg" -#: part/models.py:4043 +#: part/models.py:4052 msgid "BOM line checksum" msgstr "Alkatrészjegyzék sor ellenőrző összeg" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4057 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "Jóváhagyva" -#: part/models.py:4049 +#: part/models.py:4058 msgid "This BOM item has been validated" msgstr "Ez a BOM tétel jóvá lett hagyva" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4063 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:4055 +#: part/models.py:4064 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:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4069 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Változatok" -#: part/models.py:4061 +#: part/models.py:4070 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:4146 stock/models.py:649 +#: part/models.py:4155 stock/models.py:649 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:4156 part/models.py:4158 +#: part/models.py:4165 part/models.py:4167 msgid "Sub part must be specified" msgstr "Al alkatrészt kötelező megadni" -#: part/models.py:4298 +#: part/models.py:4307 msgid "BOM Item Substitute" msgstr "Alkatrészjegyzék tétel helyettesítő" -#: part/models.py:4319 +#: part/models.py:4328 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:4332 +#: part/models.py:4341 msgid "Parent BOM item" msgstr "Szülő alkatrészjegyzék tétel" -#: part/models.py:4340 +#: part/models.py:4349 msgid "Substitute part" msgstr "Helyettesítő alkatrész" -#: part/models.py:4356 +#: part/models.py:4365 msgid "Part 1" msgstr "1.rész" -#: part/models.py:4364 +#: part/models.py:4373 msgid "Part 2" msgstr "2.rész" -#: part/models.py:4365 +#: part/models.py:4374 msgid "Select Related Part" msgstr "Válassz kapcsolódó alkatrészt" -#: part/models.py:4384 +#: part/models.py:4393 msgid "Part relationship cannot be created between a part and itself" msgstr "Alkatrész kapcsolat nem hozható létre önmagával" -#: part/models.py:4389 +#: part/models.py:4398 msgid "Duplicate relationship already exists" msgstr "Már létezik duplikált alkatrész kapcsolat" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 msgid "Purchase currency of this stock item" msgstr "Beszerzési pénzneme ennek a készlet tételnek" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "Nincs kiválasztva alkatrész" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "Válassz kategóriát" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "Eredeti alkatrész" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "Válassz eredeti alkatrészt a másoláshoz" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "Kép másolása" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "Kép másolása az eredeti alkatrészről" -#: part/serializers.py:432 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:433 +#: 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:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "Paraméterek másolása" -#: part/serializers.py:440 +#: 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:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "Megjegyzések másolása" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "Megjegyzések másolása az eredeti alkatrészről" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "Kezdeti készlet mennyiség" -#: part/serializers.py:462 +#: part/serializers.py:480 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:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "Kezdeti készlet hely" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "Add meg a kezdeti készlet helyét" -#: part/serializers.py:482 +#: part/serializers.py:500 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:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "Válassz gyártót (hagyd üresen ha nem kell létrehozni)" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "Gyártói cikkszám" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "A kiválasztott cég nem érvényes beszállító" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "A kiválasztott cég nem érvényes gyártó" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "Van már ilyen gyártói alkatrész" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "Van már ilyen beszállítói alkatrész" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "Alkatrész másolása" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "Kezdeti adatok másolása egy másik alkatrészről" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "Kezdeti készlet" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "Kezdeti készlet mennyiség létrehozása" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "Beszállító információ" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "Kezdeti beszállító adatok hozzáadása" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "Kategória paraméterek másolása" -#: part/serializers.py:839 +#: part/serializers.py:875 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:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "Meglévő kép" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "A meglévő alkatrész képfájl neve" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "A képfájl nem létezik" -#: part/serializers.py:1068 +#: part/serializers.py:1104 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:1078 +#: part/serializers.py:1114 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:1088 +#: part/serializers.py:1124 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:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "Külső készlet nélkül" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "Külső helyeken lévő készlet nélkül" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "Riport létrehozása" -#: part/serializers.py:1101 +#: part/serializers.py:1137 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:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "Alaktrészek frissítése" -#: part/serializers.py:1107 +#: part/serializers.py:1143 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:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "Leltár funkció nincs engedélyezve" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "Számított minimum ár felülbírálása" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "Minimum ár pénzneme" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "Számított maximum ár felülbírálása" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "Maximum ár pénzneme" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "Frissítés" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "Alkatrész árak frissítése" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, 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:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "A Minimum ár nem lehet nagyobb mint a Maximum ár" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "A Maximum ár nem lehet kisebb mint a Minimum ár" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "Válassz alkatrészt ahonnan az alkatrészjegyzéket másoljuk" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "Létező adat törlése" -#: part/serializers.py:1641 +#: part/serializers.py:1687 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:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "Örököltekkel együtt" -#: part/serializers.py:1647 +#: part/serializers.py:1693 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:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "Hibás sorok kihagyása" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "Engedély a hibás sorok kihagyására" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "Helyettesítő alkatrészek másolása" -#: part/serializers.py:1659 +#: part/serializers.py:1705 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:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "Meglévő alkatrészjegyzék törlése" -#: part/serializers.py:1694 +#: part/serializers.py:1740 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:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "Nincs megadva alkatrész oszlop" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "Több egyező alkatrész is található" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "Nincs egyező alkatrész" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "Az alkatrész nem lett összetevőként jelölve" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "Mennyiség nincs megadva" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "Érvénytelen mennyiség" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "Legalább egy alkatrészjegyzék tétel szükséges" @@ -7148,7 +7206,7 @@ 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 #: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/stock.js:2179 users/models.py:191 +#: templates/js/translated/stock.js:2215 users/models.py:191 msgid "Stocktake" msgstr "Leltár" @@ -7222,7 +7280,7 @@ msgid "Validate BOM" msgstr "Alkatrészjegyzék jóváhagyása" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "Alkatrészjegyzék tétel hozzáadása" @@ -7406,7 +7464,7 @@ msgstr "Gyártáshoz lefoglalva" msgid "Allocated to Sales Orders" msgstr "Vevő rendeléshez lefoglalva" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "Gyártható" @@ -7510,7 +7568,7 @@ msgstr "Változatok" #: templates/InvenTree/settings/sidebar.html:51 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 -#: templates/js/translated/stock.js:2033 templates/navbar.html:31 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 msgid "Stock" msgstr "Készlet" @@ -7556,7 +7614,7 @@ msgstr "Szerkesztés" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 -#: templates/js/translated/stock.js:2209 +#: templates/js/translated/stock.js:2245 msgid "Last Updated" msgstr "Utoljára módosítva" @@ -8000,7 +8058,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:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "Fekvő" @@ -8308,16 +8366,16 @@ msgstr "Konfiguráció törlése" msgid "Delete the plugin configuration from the database" msgstr "Plugin konfiguráció törlése az adatbázisból" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "Nincs érvényes objektum megadva a sablonhoz" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, 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/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "Teszt riport" @@ -8337,103 +8395,111 @@ msgstr "Jogi információk" msgid "Letter" msgstr "„Letter” méret" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "Sablon neve" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "Riport sablon fájl" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "Riport sablon leírása" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "Riport verziószáma (automatikusan nő)" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "Lapméret a PDF riportokhoz" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "Jelentés fekvő nézetben" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "Minta a riport fájlnevek előállításához" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "Riport sablon engedélyezve" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "Készlet lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok)" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "Beépített tesztekkel együtt" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "Gyártmányba beépített készlet tételek teszt eredményeivel együtt" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "Gyártás szűrők" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "Gyártás lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "Alkatrész szűrők" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "Alkatrész lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "Megrendelés lekérdezés szűrők" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "Vevő rendelés lekérdezés szűrők" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "Visszavétel lekérdezés szűrők" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" msgstr "Részlet" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "Riport részlet fájl" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "Részlet fájl leírása" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" msgstr "Eszköz" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "Riport asset fájl" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "Asset fájl leírása" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "készlethely lekérdezés szűrők (vesszővel elválasztott kulcs=érték párok)" @@ -8500,12 +8566,12 @@ msgid "Test Results" msgstr "Teszt eredmények" #: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1492 msgid "Test" msgstr "Teszt" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Result" msgstr "Eredmény" @@ -8532,7 +8598,7 @@ msgstr "Beépített tételek" #: report/templates/report/inventree_test_report_base.html:168 #: stock/admin.py:162 templates/js/translated/stock.js:700 -#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110 msgid "Serial" msgstr "Sorozatszám" @@ -8616,7 +8682,7 @@ msgstr "Törlés ha kimerül" #: stock/admin.py:256 stock/models.py:886 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2193 users/models.py:113 +#: templates/js/translated/stock.js:2229 users/models.py:113 msgid "Expiry Date" msgstr "Lejárati dátum" @@ -8714,7 +8780,7 @@ msgstr "Tulajdonos kiválasztása" 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:174 templates/js/translated/stock.js:2745 +#: stock/models.py:174 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "Külső" @@ -8723,7 +8789,7 @@ msgstr "Külső" msgid "This is an external stock location" msgstr "Ez egy külső készlethely" -#: stock/models.py:181 templates/js/translated/stock.js:2754 +#: stock/models.py:181 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "Helyszín típusa" @@ -8740,7 +8806,7 @@ msgstr "Nem lehet ezt a raktári helyet szerkezetivé tenni, mert már vannak it msgid "Stock items cannot be located into structural stock locations!" msgstr "A szerkezeti raktári helyre nem lehet készletet felvenni!" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:290 msgid "Stock item cannot be created for virtual parts" msgstr "Virtuális alkatrészből nem lehet készletet létrehozni" @@ -8785,7 +8851,7 @@ msgstr "Válassz egy egyező beszállítói alkatrészt ehhez a készlet tételh msgid "Where is this stock item located?" msgstr "Hol található ez az alkatrész?" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1351 msgid "Packaging this stock item is stored in" msgstr "A csomagolása ennek a készlet tételnek itt van tárolva" @@ -8797,7 +8863,7 @@ msgstr "Ez a tétel be van építve egy másik tételbe?" msgid "Serial number for this item" msgstr "Sorozatszám ehhez a tételhez" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1334 msgid "Batch code for this stock item" msgstr "Batch kód ehhez a készlet tételhez" @@ -8874,7 +8940,7 @@ msgstr "A sorozatszám egész számok listája kell legyen" msgid "Quantity does not match serial numbers" msgstr "A mennyiség nem egyezik a megadott sorozatszámok számával" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:529 msgid "Serial numbers already exist" msgstr "A sorozatszámok már léteznek" @@ -8906,7 +8972,7 @@ msgstr "Készlet tétel gyártás alatt" msgid "Serialized stock cannot be merged" msgstr "Követésre kötelezett készlet nem vonható össze" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1240 msgid "Duplicate stock items" msgstr "Duplikált készlet tételek vannak" @@ -8930,207 +8996,236 @@ msgstr "Készlet tétel nem mozgatható mivel nincs készleten" msgid "Entry notes" msgstr "Bejegyzés megjegyzései" -#: stock/models.py:2399 +#: stock/models.py:2402 msgid "Value must be provided for this test" msgstr "Ehhez a teszthez meg kell adni értéket" -#: stock/models.py:2405 +#: stock/models.py:2408 msgid "Attachment must be uploaded for this test" msgstr "Ehhez a teszthez fel kell tölteni mellékletet" -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Test result" msgstr "Teszt eredménye" -#: stock/models.py:2439 +#: stock/models.py:2442 msgid "Test output value" msgstr "Teszt kimeneti értéke" -#: stock/models.py:2447 +#: stock/models.py:2450 msgid "Test result attachment" msgstr "Teszt eredmény melléklet" -#: stock/models.py:2451 +#: stock/models.py:2454 msgid "Test notes" msgstr "Tesztek megjegyzései" -#: stock/serializers.py:96 +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "" + +#: stock/models.py:2463 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2469 +msgid "Started" +msgstr "" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:100 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:119 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 +#: stock/serializers.py:151 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:184 msgid "Serial number is too large" msgstr "Szériaszám túl nagy" -#: stock/serializers.py:267 +#: stock/serializers.py:282 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:380 +#: stock/serializers.py:402 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:442 +#: stock/serializers.py:464 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:455 +#: stock/serializers.py:477 #, 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:462 +#: stock/serializers.py:484 msgid "Enter serial numbers for new items" msgstr "Írd be a sorozatszámokat az új tételekhez" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 msgid "Destination stock location" msgstr "Cél készlet hely" -#: stock/serializers.py:480 +#: stock/serializers.py:502 msgid "Optional note field" msgstr "Opcionális megjegyzés mező" -#: stock/serializers.py:490 +#: stock/serializers.py:512 msgid "Serial numbers cannot be assigned to this part" msgstr "Sorozatszámokat nem lehet hozzárendelni ehhez az alkatrészhez" -#: stock/serializers.py:545 +#: stock/serializers.py:567 msgid "Select stock item to install" msgstr "Válaszd ki a beépítésre szánt készlet tételt" -#: stock/serializers.py:552 +#: stock/serializers.py:574 msgid "Quantity to Install" msgstr "Beépítendő mennyiség" -#: stock/serializers.py:553 +#: stock/serializers.py:575 msgid "Enter the quantity of items to install" msgstr "Adja meg a beépítendő mennyiséget" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 msgid "Add transaction note (optional)" msgstr "Tranzakció megjegyzés hozzáadása (opcionális)" -#: stock/serializers.py:566 +#: stock/serializers.py:588 msgid "Quantity to install must be at least 1" msgstr "A beépítendő mennyiség legalább 1 legyen" -#: stock/serializers.py:574 +#: stock/serializers.py:596 msgid "Stock item is unavailable" msgstr "Készlet tétel nem elérhető" -#: stock/serializers.py:581 +#: stock/serializers.py:607 msgid "Selected part is not in the Bill of Materials" msgstr "A kiválasztott alkatrész nincs az alkatrészjegyzékben" -#: stock/serializers.py:593 +#: stock/serializers.py:620 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:628 +#: stock/serializers.py:655 msgid "Destination location for uninstalled item" msgstr "Cél hely a kiszedett tételeknek" -#: stock/serializers.py:663 +#: stock/serializers.py:690 msgid "Select part to convert stock item into" msgstr "Válassz alkatrészt amire konvertáljuk a készletet" -#: stock/serializers.py:676 +#: stock/serializers.py:703 msgid "Selected part is not a valid option for conversion" msgstr "A kiválasztott alkatrész nem megfelelő a konverzióhoz" -#: stock/serializers.py:693 +#: stock/serializers.py:720 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:724 +#: stock/serializers.py:751 msgid "Destination location for returned item" msgstr "Cél hely a visszatérő tételeknek" -#: stock/serializers.py:761 +#: stock/serializers.py:788 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:767 +#: stock/serializers.py:794 msgid "No stock items selected" msgstr "Nincs készlet tétel kiválasztva" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Alhelyek" -#: stock/serializers.py:1036 +#: stock/serializers.py:1069 msgid "Part must be salable" msgstr "Az alkatrésznek értékesíthetőnek kell lennie" -#: stock/serializers.py:1040 +#: stock/serializers.py:1073 msgid "Item is allocated to a sales order" msgstr "A tétel egy vevő rendeléshez foglalt" -#: stock/serializers.py:1044 +#: stock/serializers.py:1077 msgid "Item is allocated to a build order" msgstr "A tétel egy gyártási utasításhoz foglalt" -#: stock/serializers.py:1068 +#: stock/serializers.py:1101 msgid "Customer to assign stock items" msgstr "Vevő akihez rendeljük a készlet tételeket" -#: stock/serializers.py:1074 +#: stock/serializers.py:1107 msgid "Selected company is not a customer" msgstr "A kiválasztott cég nem egy vevő" -#: stock/serializers.py:1082 +#: stock/serializers.py:1115 msgid "Stock assignment notes" msgstr "Készlet hozzárendelés megjegyzései" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1125 stock/serializers.py:1379 msgid "A list of stock items must be provided" msgstr "A készlet tételek listáját meg kell adni" -#: stock/serializers.py:1171 +#: stock/serializers.py:1204 msgid "Stock merging notes" msgstr "Készlet összevonás megjegyzései" -#: stock/serializers.py:1176 +#: stock/serializers.py:1209 msgid "Allow mismatched suppliers" msgstr "Nem egyező beszállítók megengedése" -#: stock/serializers.py:1177 +#: stock/serializers.py:1210 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:1182 +#: stock/serializers.py:1215 msgid "Allow mismatched status" msgstr "Nem egyező állapotok megjelenítése" -#: stock/serializers.py:1183 +#: stock/serializers.py:1216 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:1193 +#: stock/serializers.py:1226 msgid "At least two stock items must be provided" msgstr "Legalább két készlet tételt meg kell adni" -#: stock/serializers.py:1260 +#: stock/serializers.py:1293 msgid "No Change" msgstr "Nincs változás" -#: stock/serializers.py:1289 +#: stock/serializers.py:1322 msgid "StockItem primary key value" msgstr "Készlet tétel elsődleges kulcs értéke" -#: stock/serializers.py:1308 +#: stock/serializers.py:1341 msgid "Stock item status code" msgstr "Készlet tétel státusz kódja" -#: stock/serializers.py:1336 +#: stock/serializers.py:1369 msgid "Stock transaction notes" msgstr "Készlet tranzakció megjegyzései" @@ -9155,7 +9250,7 @@ msgstr "Teszt adatok" msgid "Test Report" msgstr "Teszt riport" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 msgid "Delete Test Data" msgstr "Teszt adatok törlése" @@ -9171,15 +9266,15 @@ msgstr "Készlet tétel megjegyzések" msgid "Installed Stock Items" msgstr "Beépített készlet tételek" -#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 msgid "Install Stock Item" msgstr "Készlet tétel beépítése" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:274 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:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 msgid "Add Test Result" msgstr "Teszt eredmény hozzáadása" @@ -9202,17 +9297,17 @@ msgid "Stock adjustment actions" msgstr "Készlet módosítási műveletek" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 msgid "Count stock" msgstr "Leltározás" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:1803 msgid "Add stock" msgstr "Készlet növelése" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1776 +#: templates/js/translated/stock.js:1812 msgid "Remove stock" msgstr "Készlet csökkentése" @@ -9221,12 +9316,12 @@ msgid "Serialize stock" msgstr "Sorozatszámok előállítása" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 msgid "Transfer stock" msgstr "Készlet áthelyezése" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1884 msgid "Assign to customer" msgstr "Vevőhöz rendelése" @@ -9365,7 +9460,7 @@ msgid "No stocktake performed" msgstr "Még nem volt leltározva" #: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1915 +#: templates/js/translated/stock.js:1951 msgid "stock item" msgstr "készlet tétel" @@ -9470,7 +9565,7 @@ msgid "New Location" msgstr "Új hely" #: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2536 +#: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "készlet hely" @@ -10064,7 +10159,7 @@ msgid "Delete Location Type" msgstr "Készlethely típus törlése" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:37 msgid "New Location Type" msgstr "Új készlethely típus" @@ -10121,7 +10216,7 @@ msgstr "Vevő rendelés beállításai" msgid "Stock Settings" msgstr "Készlet beállítások" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:33 msgid "Stock Location Types" msgstr "Készlethely típusok" @@ -10663,7 +10758,7 @@ msgid "The following parts are low on required stock" msgstr "A következő alkatrészek szükséges készlete alacsony" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "Szükséges mennyiség" @@ -10677,7 +10772,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:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "Minimum mennyiség" @@ -11052,62 +11147,66 @@ msgstr "Alkatrészjegyzék árazása nem teljes" msgid "No pricing available" msgstr "Nincsenek árak" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "Nincs szabad" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "Változatokkal és helyettesítőkkel együtt" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "Változatokkal együtt" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "Helyettesítőkkel együtt" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "Fogyóeszköz tétel" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "Alkatrészjegyzék tétel jóváhagyása" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "Ez a sor jóvá lett hagyva" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "Helyettesítő alkatrészek szerkesztése" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "Alkatrészjegyzék tétel szerkesztése" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "Alkatrészjegyzék tétel törlése" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "Alkatrészjegyzék megtekintése" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "Nem találhatók alkatrészjegyzék tételek" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "Szükséges alkatrész" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "Örökölve a szülő alkatrészjegyzéktől" @@ -11390,7 +11489,7 @@ msgstr "Nincs a lekérdezéssel egyező gyártási utasítás" #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 -#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 msgid "Select" msgstr "Kiválaszt" @@ -11402,7 +11501,7 @@ msgstr "Gyártás késésben van" msgid "Progress" msgstr "Haladás" -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006 +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "Nincs felhasználói információ" @@ -11450,29 +11549,29 @@ msgstr "Mennyiségi egység" msgid "Sufficient stock available" msgstr "Van elegendő" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "Fogyóeszköz tétel" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "Követett tétel" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "Gyártási készlet" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 msgid "Order stock" msgstr "Készlet rendelés" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "Lefoglalt készlet" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "Készlet foglalások törlése" @@ -11805,15 +11904,15 @@ msgstr "Keresés" msgid "Clear input" msgstr "Bevitel törlése" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "File Column" msgstr "Fájl oszlop" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "Field Name" msgstr "Mező név" -#: templates/js/translated/forms.js:3087 +#: templates/js/translated/forms.js:3103 msgid "Select Columns" msgstr "Oszlopok kiválasztása" @@ -12290,7 +12389,7 @@ msgid "No category" msgstr "Nincs kategória" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 -#: templates/js/translated/stock.js:2633 +#: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "Megjelenítés listaként" @@ -12302,7 +12401,7 @@ msgstr "Megjelenítés rácsnézetként" msgid "No subcategories found" msgstr "Nem találhatóak alkategóriák" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "Megjelenítés fában" @@ -12314,64 +12413,64 @@ msgstr "Alkategóriák betöltése" msgid "Subscribed category" msgstr "Értesítésre beállított kategória" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "Nincs a lekérdezéssel egyező teszt sablon" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "találat" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 msgid "Edit test result" msgstr "Teszt eredmény szerkesztése" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 msgid "Delete test result" msgstr "Teszt eredmény törlése" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 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:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "Teszt eredmény sablon szerkesztése" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "Teszt eredmény sablon törlése" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "Nincs megadva dátum" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "A megadott dátum a múltban van" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "Spekulatív" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 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:3106 +#: templates/js/translated/part.js:3115 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:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "Ütemezett készlet mennyiség" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "Maximum mennyiség" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "Minimális készlet" @@ -12908,7 +13007,7 @@ msgstr "Készlet foglalások törlése" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1737 +#: templates/js/translated/stock.js:1773 msgid "Shipped to customer" msgstr "Vevőnek kiszállítva" @@ -13166,7 +13265,7 @@ msgstr "Egyedi követésre kötelezett tételeknél a menyiség nem módosíthat msgid "Specify stock quantity" msgstr "Készlet mennyiség megadása" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "Készlet tételek kiválasztása" @@ -13190,248 +13289,256 @@ msgstr "SIKERTELEN" msgid "NO RESULT" msgstr "NINCS EREDMÉNY" -#: templates/js/translated/stock.js:1440 +#: templates/js/translated/stock.js:1447 msgid "Pass test" msgstr "Teszt sikeres" -#: templates/js/translated/stock.js:1443 +#: templates/js/translated/stock.js:1450 msgid "Add test result" msgstr "Teszt eredmény hozzáadása" -#: templates/js/translated/stock.js:1466 +#: templates/js/translated/stock.js:1473 msgid "No test results found" msgstr "Nincs teszt eredmény" -#: templates/js/translated/stock.js:1530 +#: templates/js/translated/stock.js:1537 msgid "Test Date" msgstr "Teszt dátuma" -#: templates/js/translated/stock.js:1677 +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 msgid "Edit Test Result" msgstr "Teszt eredmény szerkesztése" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1733 msgid "Delete Test Result" msgstr "Teszt eredmény törlése" -#: templates/js/translated/stock.js:1729 +#: templates/js/translated/stock.js:1765 msgid "In production" msgstr "Gyártásban" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1769 msgid "Installed in Stock Item" msgstr "Beépítve készlet tételbe" -#: templates/js/translated/stock.js:1741 +#: templates/js/translated/stock.js:1777 msgid "Assigned to Sales Order" msgstr "Vevő rendeléshez hozzárendelve" -#: templates/js/translated/stock.js:1747 +#: templates/js/translated/stock.js:1783 msgid "No stock location set" msgstr "Nincs hely megadva" -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1839 msgid "Change stock status" msgstr "Készlet állapot módosítása" -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1848 msgid "Merge stock" msgstr "Készlet összevonása" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:1897 msgid "Delete stock" msgstr "Készlet törlése" -#: templates/js/translated/stock.js:1916 +#: templates/js/translated/stock.js:1952 msgid "stock items" msgstr "készlet tételek" -#: templates/js/translated/stock.js:1921 +#: templates/js/translated/stock.js:1957 msgid "Scan to location" msgstr "Beolvasás helyre" -#: templates/js/translated/stock.js:1932 +#: templates/js/translated/stock.js:1968 msgid "Stock Actions" msgstr "Készlet műveletek" -#: templates/js/translated/stock.js:1976 +#: templates/js/translated/stock.js:2012 msgid "Load installed items" msgstr "Beépített tételek betöltése" -#: templates/js/translated/stock.js:2054 +#: templates/js/translated/stock.js:2090 msgid "Stock item is in production" msgstr "Készlet tétel gyártás alatt" -#: templates/js/translated/stock.js:2059 +#: templates/js/translated/stock.js:2095 msgid "Stock item assigned to sales order" msgstr "Készlet tétel hozzárendelve egy vevői rendeléshez" -#: templates/js/translated/stock.js:2062 +#: templates/js/translated/stock.js:2098 msgid "Stock item assigned to customer" msgstr "Készlet tétel hozzárendelve egy vevőhöz" -#: templates/js/translated/stock.js:2065 +#: templates/js/translated/stock.js:2101 msgid "Serialized stock item has been allocated" msgstr "Egyedi követésre kötelezett készlet tétel lefoglalva" -#: templates/js/translated/stock.js:2067 +#: templates/js/translated/stock.js:2103 msgid "Stock item has been fully allocated" msgstr "Készlet tétel teljes egészében lefoglalva" -#: templates/js/translated/stock.js:2069 +#: templates/js/translated/stock.js:2105 msgid "Stock item has been partially allocated" msgstr "Készlet tétel részben lefoglalva" -#: templates/js/translated/stock.js:2072 +#: templates/js/translated/stock.js:2108 msgid "Stock item has been installed in another item" msgstr "Készlet tétel beépítve egy másikba" -#: templates/js/translated/stock.js:2074 +#: templates/js/translated/stock.js:2110 msgid "Stock item has been consumed by a build order" msgstr "Készlet tétel fel lett használva egy gyártásban" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2114 msgid "Stock item has expired" msgstr "Készlet tétel lejárt" -#: templates/js/translated/stock.js:2080 +#: templates/js/translated/stock.js:2116 msgid "Stock item will expire soon" msgstr "Készlet tétel hamarosan lejár" -#: templates/js/translated/stock.js:2085 +#: templates/js/translated/stock.js:2121 msgid "Stock item has been rejected" msgstr "Készlet tétel elutasítva" -#: templates/js/translated/stock.js:2087 +#: templates/js/translated/stock.js:2123 msgid "Stock item is lost" msgstr "Készlet tétel elveszett" -#: templates/js/translated/stock.js:2089 +#: templates/js/translated/stock.js:2125 msgid "Stock item is destroyed" msgstr "Készlet tétel megsemmisült" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2129 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "Kimerült" -#: templates/js/translated/stock.js:2258 +#: templates/js/translated/stock.js:2294 msgid "Supplier part not specified" msgstr "Beszállítói alkatrész nincs megadva" -#: templates/js/translated/stock.js:2305 +#: templates/js/translated/stock.js:2341 msgid "Stock Value" msgstr "Készletérték" -#: templates/js/translated/stock.js:2433 +#: templates/js/translated/stock.js:2469 msgid "No stock items matching query" msgstr "Nincs a lekérdezésnek megfelelő készlet tétel" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2573 msgid "stock locations" msgstr "készlethelyek" -#: templates/js/translated/stock.js:2692 +#: templates/js/translated/stock.js:2728 msgid "Load Sublocations" msgstr "Alhelyek betöltése" -#: templates/js/translated/stock.js:2810 +#: templates/js/translated/stock.js:2846 msgid "Details" msgstr "Részletek" -#: templates/js/translated/stock.js:2814 +#: templates/js/translated/stock.js:2850 msgid "No changes" msgstr "Nincs változás" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:2862 msgid "Part information unavailable" msgstr "Alkatrész információ nem áll rendelkezésre" -#: templates/js/translated/stock.js:2848 +#: templates/js/translated/stock.js:2884 msgid "Location no longer exists" msgstr "A hely már nem létezik" -#: templates/js/translated/stock.js:2865 +#: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" msgstr "A gyártási utasítás már nem létezik" -#: templates/js/translated/stock.js:2880 +#: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" msgstr "Beszerzési megrendelés már nem létezik" -#: templates/js/translated/stock.js:2897 +#: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" msgstr "Vevői megrendelés már nem létezik" -#: templates/js/translated/stock.js:2914 +#: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" msgstr "Visszavétel már nem létezik" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" msgstr "Vevő már nem létezik" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" msgstr "A készlet tétel már nem létezik" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3005 msgid "Added" msgstr "Hozzáadva" -#: templates/js/translated/stock.js:2977 +#: templates/js/translated/stock.js:3013 msgid "Removed" msgstr "Eltávolítva" -#: templates/js/translated/stock.js:3049 +#: templates/js/translated/stock.js:3085 msgid "No installed items" msgstr "Nincsenek beépített tételek" -#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139 +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" msgstr "Készlet tétel kiszedése" -#: templates/js/translated/stock.js:3161 +#: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" msgstr "Válaszd ki a kiszedni való készlet tételt" -#: templates/js/translated/stock.js:3182 +#: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" msgstr "Másik tétel beépítése ebbe a készlet tételbe" -#: templates/js/translated/stock.js:3183 +#: templates/js/translated/stock.js:3219 msgid "Stock items can only be installed if they meet the following criteria" msgstr "Készlet tételek csak akkor építhetők be ha teljesítik a következő kritériumokat" -#: templates/js/translated/stock.js:3185 +#: templates/js/translated/stock.js:3221 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "A készlet tétel egy olyan alkatrészre mutat ami alkatrészjegyzéke ennek a készlet tételnek" -#: templates/js/translated/stock.js:3186 +#: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" msgstr "A készlet tétel jelenleg elérhető készleten" -#: templates/js/translated/stock.js:3187 +#: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" msgstr "A készlet tétel még nem épült be egy másik tételbe" -#: templates/js/translated/stock.js:3188 +#: templates/js/translated/stock.js:3224 msgid "The Stock Item is tracked by either a batch code or serial number" msgstr "A készlet tétel követett vagy sorozatszámmal vagy batch kóddal" -#: templates/js/translated/stock.js:3201 +#: templates/js/translated/stock.js:3237 msgid "Select part to install" msgstr "Válaszd ki a beépítendő alkatrészt" -#: templates/js/translated/stock.js:3264 +#: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" msgstr "Válassz ki egy vagy több készlet tételt" -#: templates/js/translated/stock.js:3277 +#: templates/js/translated/stock.js:3313 msgid "Selected stock items" msgstr "Kiválasztott készlet tételek" -#: templates/js/translated/stock.js:3281 +#: templates/js/translated/stock.js:3317 msgid "Change Stock Status" msgstr "Készlet állapot módosítása" diff --git a/InvenTree/locale/id/LC_MESSAGES/django.po b/InvenTree/locale/id/LC_MESSAGES/django.po index be27e826e6..0a9db2ad22 100644 --- a/InvenTree/locale/id/LC_MESSAGES/django.po +++ b/InvenTree/locale/id/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 04:05+0000\n" -"PO-Revision-Date: 2024-02-28 07:23\n" +"POT-Creation-Date: 2024-03-19 01:26+0000\n" +"PO-Revision-Date: 2024-03-19 11:52\n" "Last-Translator: \n" "Language-Team: Indonesian\n" "Language: id_ID\n" @@ -30,20 +30,20 @@ msgstr "Pengguna tidak memiliki izin untuk melihat model ini" msgid "Invalid unit provided ({unit})" msgstr "" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "Nilai tidak tersedia" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" msgstr "" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" msgstr "" @@ -64,18 +64,18 @@ msgstr "Masukkan tanggal" #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 #: templates/js/translated/return_order.js:776 #: templates/js/translated/sales_order.js:1067 #: templates/js/translated/sales_order.js:1982 -#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 msgid "Notes" msgstr "Catatan" @@ -132,42 +132,42 @@ msgstr "Domain surel yang diberikan tidak perbolehkan." msgid "Registration is disabled." msgstr "" -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "Jumlah yang diberikan tidak valid" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "Nomor seri kosong" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "Tidak ada nomor seri ditemukan" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "Hapus tag-tag HTML dari nilai ini" @@ -203,131 +203,135 @@ msgstr "" msgid "Supplied URL is not a valid image file" msgstr "URL yang diberikan bukan file gambar yang valid" -#: InvenTree/locales.py:16 +#: InvenTree/locales.py:18 msgid "Bulgarian" msgstr "" -#: InvenTree/locales.py:17 +#: InvenTree/locales.py:19 msgid "Czech" msgstr "Ceko" -#: InvenTree/locales.py:18 +#: InvenTree/locales.py:20 msgid "Danish" msgstr "Denmark" -#: InvenTree/locales.py:19 +#: InvenTree/locales.py:21 msgid "German" msgstr "Jerman" -#: InvenTree/locales.py:20 +#: InvenTree/locales.py:22 msgid "Greek" msgstr "Yunani" -#: InvenTree/locales.py:21 +#: InvenTree/locales.py:23 msgid "English" msgstr "Inggris" -#: InvenTree/locales.py:22 +#: InvenTree/locales.py:24 msgid "Spanish" msgstr "Spanyol" -#: InvenTree/locales.py:23 +#: InvenTree/locales.py:25 msgid "Spanish (Mexican)" msgstr "Spanyol (Meksiko)" -#: InvenTree/locales.py:24 +#: InvenTree/locales.py:26 msgid "Farsi / Persian" msgstr "Farsi / Persia" -#: InvenTree/locales.py:25 +#: InvenTree/locales.py:27 msgid "Finnish" msgstr "" -#: InvenTree/locales.py:26 +#: InvenTree/locales.py:28 msgid "French" msgstr "Perancis" -#: InvenTree/locales.py:27 +#: InvenTree/locales.py:29 msgid "Hebrew" msgstr "Ibrani" -#: InvenTree/locales.py:28 +#: InvenTree/locales.py:30 msgid "Hindi" msgstr "" -#: InvenTree/locales.py:29 +#: InvenTree/locales.py:31 msgid "Hungarian" msgstr "Hungaria" -#: InvenTree/locales.py:30 +#: InvenTree/locales.py:32 msgid "Italian" msgstr "Itali" -#: InvenTree/locales.py:31 +#: InvenTree/locales.py:33 msgid "Japanese" msgstr "Jepang" -#: InvenTree/locales.py:32 +#: InvenTree/locales.py:34 msgid "Korean" msgstr "Korea" -#: InvenTree/locales.py:33 +#: InvenTree/locales.py:35 +msgid "Latvian" +msgstr "" + +#: InvenTree/locales.py:36 msgid "Dutch" msgstr "Belanda" -#: InvenTree/locales.py:34 +#: InvenTree/locales.py:37 msgid "Norwegian" msgstr "Norwegia" -#: InvenTree/locales.py:35 +#: InvenTree/locales.py:38 msgid "Polish" msgstr "Polandia" -#: InvenTree/locales.py:36 +#: InvenTree/locales.py:39 msgid "Portuguese" msgstr "Portugis" -#: InvenTree/locales.py:37 +#: InvenTree/locales.py:40 msgid "Portuguese (Brazilian)" msgstr "Portugis (Brasil)" -#: InvenTree/locales.py:38 +#: InvenTree/locales.py:41 msgid "Russian" msgstr "Rusia" -#: InvenTree/locales.py:39 +#: InvenTree/locales.py:42 msgid "Slovak" msgstr "" -#: InvenTree/locales.py:40 +#: InvenTree/locales.py:43 msgid "Slovenian" msgstr "" -#: InvenTree/locales.py:41 +#: InvenTree/locales.py:44 msgid "Serbian" msgstr "" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:45 msgid "Swedish" msgstr "Swedia" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:46 msgid "Thai" msgstr "Thai" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:47 msgid "Turkish" msgstr "Turki" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:48 msgid "Vietnamese" msgstr "Vietnam" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:49 msgid "Chinese (Simplified)" msgstr "" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:50 msgid "Chinese (Traditional)" msgstr "" @@ -391,7 +395,7 @@ msgstr "File tidak ditemukan" msgid "Missing external link" msgstr "Tautan eksternal tidak ditemukan" -#: InvenTree/models.py:559 stock/models.py:2446 +#: InvenTree/models.py:559 stock/models.py:2449 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -401,7 +405,7 @@ msgstr "Lampiran" msgid "Select file to attach" msgstr "Pilih file untuk dilampirkan" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -432,13 +436,13 @@ msgstr "Komentar" msgid "File comment" msgstr "Komentar file" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:3000 users/models.py:100 +#: templates/js/translated/stock.js:3036 users/models.py:100 msgid "User" msgstr "Pengguna" @@ -479,10 +483,10 @@ msgstr "" msgid "Invalid choice" msgstr "Pilihan tidak valid" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -495,7 +499,7 @@ msgstr "Pilihan tidak valid" #: templates/js/translated/company.js:1155 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Nama" @@ -506,10 +510,10 @@ msgstr "Nama" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -523,7 +527,7 @@ msgstr "Nama" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -531,8 +535,8 @@ msgstr "Nama" #: templates/js/translated/return_order.js:314 #: templates/js/translated/sales_order.js:802 #: templates/js/translated/sales_order.js:1812 -#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021 -#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "Keterangan" @@ -545,7 +549,7 @@ msgid "parent" msgstr "induk" #: InvenTree/models.py:916 templates/js/translated/part.js:2794 -#: templates/js/translated/stock.js:2721 +#: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Direktori" @@ -581,7 +585,7 @@ msgstr "Terjadi Kesalahan Server" msgid "An error has been logged by the server." msgstr "Sebuah kesalahan telah dicatat oleh server." -#: InvenTree/serializers.py:62 part/models.py:4134 +#: InvenTree/serializers.py:62 part/models.py:4143 msgid "Must be a valid number" msgstr "Harus berupa angka yang valid" @@ -596,89 +600,89 @@ msgstr "Mata Uang" msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:436 +#: InvenTree/serializers.py:441 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:448 +#: InvenTree/serializers.py:453 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:467 +#: InvenTree/serializers.py:472 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:469 +#: InvenTree/serializers.py:474 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:476 +#: InvenTree/serializers.py:481 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:537 +#: InvenTree/serializers.py:542 msgid "Filename" msgstr "Nama File" -#: InvenTree/serializers.py:571 +#: InvenTree/serializers.py:576 msgid "Invalid value" msgstr "Nilai tidak valid" -#: InvenTree/serializers.py:591 +#: InvenTree/serializers.py:596 msgid "Data File" msgstr "File data" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:597 msgid "Select data file for upload" msgstr "Pilih file untuk diunggah" -#: InvenTree/serializers.py:609 +#: InvenTree/serializers.py:614 msgid "Unsupported file type" msgstr "Jenis file tidak didukung" -#: InvenTree/serializers.py:615 +#: InvenTree/serializers.py:620 msgid "File is too large" msgstr "Ukuran file terlalu besar" -#: InvenTree/serializers.py:636 +#: InvenTree/serializers.py:641 msgid "No columns found in file" msgstr "Tidak ditemukan kolom dalam file" -#: InvenTree/serializers.py:639 +#: InvenTree/serializers.py:644 msgid "No data rows found in file" msgstr "Tidak ditemukan barisan data dalam file" -#: InvenTree/serializers.py:752 +#: InvenTree/serializers.py:757 msgid "No data rows provided" msgstr "Tidak ada barisan data tersedia" -#: InvenTree/serializers.py:755 +#: InvenTree/serializers.py:760 msgid "No data columns supplied" msgstr "Tidak ada kolom data tersedia" -#: InvenTree/serializers.py:822 +#: InvenTree/serializers.py:827 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Kolom yang diperlukan kurang: '{name}'" -#: InvenTree/serializers.py:831 +#: InvenTree/serializers.py:836 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Kolom duplikat: '{col}'" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:859 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:855 +#: InvenTree/serializers.py:860 msgid "URL of remote image file" msgstr "URL file gambar external" -#: InvenTree/serializers.py:873 +#: InvenTree/serializers.py:878 msgid "Downloading images from remote URL is not enabled" msgstr "Unduhan gambar dari URL external tidak aktif" -#: InvenTree/status.py:66 part/serializers.py:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "" @@ -818,7 +822,7 @@ msgstr "Dipisah dari item induk" msgid "Split child item" msgstr "Pisah item dari barang induk" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 msgid "Merged stock items" msgstr "Stok item digabungkan" @@ -838,7 +842,7 @@ msgstr "Order output produksi selesai" msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 msgid "Consumed by build order" msgstr "Terpakai oleh order produksi" @@ -938,14 +942,14 @@ msgstr "Tentang InvenTree" msgid "Build must be cancelled before it can be deleted" msgstr "Pesanan harus dibatalkan sebelum dapat dihapus" -#: build/api.py:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -960,7 +964,7 @@ msgid "Tracked" msgstr "" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -985,7 +989,7 @@ msgstr "" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "Order Produksi" @@ -1014,7 +1018,7 @@ msgstr "Referensi Order Produksi" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1044,11 +1048,11 @@ msgstr "Produksi induk dari produksi ini" #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1059,7 +1063,7 @@ msgstr "Produksi induk dari produksi ini" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:267 stock/serializers.py:689 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1086,9 +1090,9 @@ msgstr "Produksi induk dari produksi ini" #: templates/js/translated/sales_order.js:1598 #: templates/js/translated/sales_order.js:1796 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960 -#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054 -#: templates/js/translated/stock.js:3200 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 msgid "Part" msgstr "Bagian" @@ -1146,8 +1150,8 @@ msgstr "Status pembuatan" msgid "Build status code" msgstr "Kode status pembuatan" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Kode Kelompok" @@ -1242,53 +1246,53 @@ msgstr "" msgid "Project code for this build order" msgstr "" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "Tidak ada hasil produksi yang ditentukan" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "Hasil produksi sudah selesai" -#: build/models.py:789 +#: build/models.py:805 msgid "Build output does not match Build Order" msgstr "Hasil produksi tidak sesuai dengan order produksi" -#: build/models.py:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 msgid "Quantity must be greater than zero" msgstr "Jumlah harus lebih besar daripada nol" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" msgstr "" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1298,7 +1302,7 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:463 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1310,7 +1314,7 @@ msgstr "" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1325,43 +1329,43 @@ msgstr "" #: templates/js/translated/sales_order.js:1698 #: templates/js/translated/sales_order.js:1824 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 -#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985 -#: templates/js/translated/stock.js:3068 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "Jumlah" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1381 +#: build/models.py:1397 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:1390 +#: build/models.py:1406 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "Item stok teralokasikan terlalu banyak" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "Jumlah yang dialokasikan harus lebih dari nol" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "Jumlah harus 1 untuk stok dengan nomor seri" -#: build/models.py:1473 +#: build/models.py:1489 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 @@ -1372,23 +1376,23 @@ msgstr "" #: templates/js/translated/sales_order.js:1605 #: templates/js/translated/sales_order.js:1692 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 -#: templates/js/translated/stock.js:2941 +#: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "Stok Item" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "Sumber stok item" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "Jumlah stok yang dialokasikan ke produksi" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "Pasang ke" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "Tujuan stok item" @@ -1425,8 +1429,8 @@ msgstr "Jumlah bagian yang dapat dilacak harus berupa angka bulat" 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:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 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" @@ -1451,10 +1455,10 @@ msgstr "Nomor-nomor seri berikut sudah ada atau tidak valid" msgid "A list of build outputs must be provided" msgstr "Daftar hasil pesanan harus disediakan" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1466,8 +1470,8 @@ msgstr "Daftar hasil pesanan harus disediakan" #: templates/js/translated/sales_order.js:1627 #: templates/js/translated/sales_order.js:1706 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164 -#: templates/js/translated/stock.js:2835 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 msgid "Location" msgstr "Lokasi" @@ -1493,16 +1497,16 @@ msgstr "Lokasi hasil pesanan yang selesai" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 #: templates/js/translated/purchase_order.js:1723 #: templates/js/translated/return_order.js:331 #: templates/js/translated/sales_order.js:819 -#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959 -#: templates/js/translated/stock.js:3084 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 msgid "Status" msgstr "Status" @@ -1566,7 +1570,7 @@ msgstr "Terima bahwa stok item tidak teralokasikan sepenuhnya ke pesanan ini" msgid "Required stock has not been fully allocated" msgstr "Stok yang diperlukan belum teralokasikan sepenuhnya" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "Terima Tidak Selesai" @@ -1602,11 +1606,11 @@ msgstr "" 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:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1065 msgid "Item must be in stock" msgstr "Item harus tersedia dalam stok" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Jumlah tersedia ({q}) terlampaui" @@ -1619,7 +1623,7 @@ msgstr "Hasil produksi harus ditentukan untuk mengalokasikan bagian yang terlaca 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:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "Item yang dialokasikan harus disediakan" @@ -1659,44 +1663,45 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 #: stock/api.py:745 msgid "BOM Item" msgstr "Item tagihan material" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "Stok dibutuhkan untuk order produksi" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1862,7 +1867,7 @@ msgstr "" #: templates/js/translated/pricing.js:929 #: templates/js/translated/sales_order.js:769 #: templates/js/translated/sales_order.js:992 -#: templates/js/translated/stock.js:2888 +#: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "" @@ -1920,8 +1925,8 @@ msgstr "" #: templates/js/translated/build.js:1377 #: templates/js/translated/model_renderers.js:235 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153 -#: templates/js/translated/stock.js:3091 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" @@ -1990,27 +1995,31 @@ msgstr "" msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:210 -msgid "Incomplete Build Outputs" -msgstr "" - -#: build/templates/build/detail.html:214 -msgid "Create new build output" +#: 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:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2026,15 +2035,15 @@ msgstr "" msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" msgstr "" @@ -2112,1390 +2121,1414 @@ msgstr "" msgid "User or group responsible for this project" msgstr "" -#: common/models.py:737 +#: common/models.py:744 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:741 +#: common/models.py:748 msgid "Settings value" msgstr "" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "" -#: common/models.py:1231 +#: common/models.py:1238 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1283 +#: common/models.py:1290 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "" -#: common/models.py:1298 +#: common/models.py:1305 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "" -#: common/models.py:1305 +#: common/models.py:1312 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "" -#: common/models.py:1332 +#: common/models.py:1339 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "" -#: common/models.py:1339 +#: common/models.py:1346 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "" -#: common/models.py:1346 +#: common/models.py:1353 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1352 +#: common/models.py:1359 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1360 +#: common/models.py:1367 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1369 +#: common/models.py:1376 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1378 +#: common/models.py:1385 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1386 +#: common/models.py:1393 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1399 +#: common/models.py:1406 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "" -#: common/models.py:1411 +#: common/models.py:1418 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1415 +#: common/models.py:1422 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1421 +#: common/models.py:1428 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1427 +#: common/models.py:1434 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1433 +#: common/models.py:1440 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1439 +#: common/models.py:1446 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1505 +#: common/models.py:1512 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1512 +#: common/models.py:1519 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "" -#: common/models.py:1525 +#: common/models.py:1532 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1526 +#: common/models.py:1533 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1530 +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1532 +#: common/models.py:1539 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1540 +#: common/models.py:1547 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1548 +#: common/models.py:1555 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1564 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1580 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1588 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1595 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1603 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1611 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1618 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1632 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1645 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: 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:202 msgid "Page Size" msgstr "" -#: common/models.py:1651 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1657 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1664 +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1671 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1677 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1692 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1704 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1711 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1719 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1725 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1731 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1736 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1741 +#: 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 "Build Order Reference Pattern" msgstr "" -#: common/models.py:1743 +#: common/models.py:1764 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1757 +#: common/models.py:1778 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1765 +#: common/models.py:1786 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1773 +#: common/models.py:1794 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1780 +#: common/models.py:1801 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1787 +#: common/models.py:1808 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1795 +#: common/models.py:1816 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1803 +#: common/models.py:1824 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1811 +#: common/models.py:1832 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "" -#: common/models.py:1825 +#: common/models.py:1846 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1838 +#: common/models.py:1859 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1844 +#: common/models.py:1865 msgid "Email required" msgstr "Surel diperlukan" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1852 +#: common/models.py:1873 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "" -#: common/models.py:1859 +#: common/models.py:1880 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "" -#: common/models.py:1865 +#: common/models.py:1886 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "" -#: common/models.py:1879 +#: common/models.py:1900 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1892 +#: common/models.py:1913 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1929 +#: common/models.py:1950 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "" -#: common/models.py:1936 +#: common/models.py:1957 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1950 +#: common/models.py:1971 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1958 +#: common/models.py:1979 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1966 +#: common/models.py:1987 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1974 +#: common/models.py:1995 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2029 common/models.py:2429 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2043 +#: common/models.py:2070 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2045 +#: common/models.py:2072 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2051 +#: common/models.py:2078 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2052 +#: common/models.py:2079 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2057 +#: common/models.py:2084 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2058 +#: common/models.py:2085 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2063 +#: common/models.py:2090 msgid "Show latest parts" msgstr "" -#: common/models.py:2064 +#: common/models.py:2091 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2069 +#: common/models.py:2096 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2070 +#: common/models.py:2097 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2075 +#: common/models.py:2102 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2076 +#: common/models.py:2103 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2081 +#: common/models.py:2108 msgid "Show low stock" msgstr "" -#: common/models.py:2082 +#: common/models.py:2109 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2087 +#: common/models.py:2114 msgid "Show depleted stock" msgstr "" -#: common/models.py:2088 +#: common/models.py:2115 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2093 +#: common/models.py:2120 msgid "Show needed stock" msgstr "" -#: common/models.py:2094 +#: common/models.py:2121 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2099 +#: common/models.py:2126 msgid "Show expired stock" msgstr "" -#: common/models.py:2100 +#: common/models.py:2127 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2105 +#: common/models.py:2132 msgid "Show stale stock" msgstr "" -#: common/models.py:2106 +#: common/models.py:2133 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2111 +#: common/models.py:2138 msgid "Show pending builds" msgstr "" -#: common/models.py:2112 +#: common/models.py:2139 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2117 +#: common/models.py:2144 msgid "Show overdue builds" msgstr "" -#: common/models.py:2118 +#: common/models.py:2145 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2123 +#: common/models.py:2150 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2124 +#: common/models.py:2151 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2129 +#: common/models.py:2156 msgid "Show overdue POs" msgstr "" -#: common/models.py:2130 +#: common/models.py:2157 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2135 +#: common/models.py:2162 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2136 +#: common/models.py:2163 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2141 +#: common/models.py:2168 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2142 +#: common/models.py:2169 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2147 +#: common/models.py:2174 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2148 +#: common/models.py:2175 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2153 +#: common/models.py:2180 msgid "Show News" msgstr "" -#: common/models.py:2154 +#: common/models.py:2181 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2159 +#: common/models.py:2186 msgid "Inline label display" msgstr "" -#: common/models.py:2161 +#: common/models.py:2188 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2167 +#: common/models.py:2194 msgid "Default label printer" msgstr "" -#: common/models.py:2169 +#: common/models.py:2196 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2175 +#: common/models.py:2202 msgid "Inline report display" msgstr "" -#: common/models.py:2177 +#: common/models.py:2204 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2183 +#: common/models.py:2210 msgid "Search Parts" msgstr "" -#: common/models.py:2184 +#: common/models.py:2211 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2189 +#: common/models.py:2216 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2190 +#: common/models.py:2217 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2195 +#: common/models.py:2222 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2196 +#: common/models.py:2223 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2201 +#: common/models.py:2228 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2202 +#: common/models.py:2229 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2207 +#: common/models.py:2234 msgid "Search Categories" msgstr "" -#: common/models.py:2208 +#: common/models.py:2235 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2213 +#: common/models.py:2240 msgid "Search Stock" msgstr "" -#: common/models.py:2214 +#: common/models.py:2241 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2219 +#: common/models.py:2246 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2221 +#: common/models.py:2248 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2227 +#: common/models.py:2254 msgid "Search Locations" msgstr "" -#: common/models.py:2228 +#: common/models.py:2255 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2233 +#: common/models.py:2260 msgid "Search Companies" msgstr "" -#: common/models.py:2234 +#: common/models.py:2261 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2239 +#: common/models.py:2266 msgid "Search Build Orders" msgstr "" -#: common/models.py:2240 +#: common/models.py:2267 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2245 +#: common/models.py:2272 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2246 +#: common/models.py:2273 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2251 +#: common/models.py:2278 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2253 +#: common/models.py:2280 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2259 +#: common/models.py:2286 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2260 +#: common/models.py:2287 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2265 +#: common/models.py:2292 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2267 +#: common/models.py:2294 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2273 +#: common/models.py:2300 msgid "Search Return Orders" msgstr "" -#: common/models.py:2274 +#: common/models.py:2301 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2279 +#: common/models.py:2306 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2281 +#: common/models.py:2308 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2287 +#: common/models.py:2314 msgid "Search Preview Results" msgstr "" -#: common/models.py:2289 +#: common/models.py:2316 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2295 +#: common/models.py:2322 msgid "Regex Search" msgstr "" -#: common/models.py:2296 +#: common/models.py:2323 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2301 +#: common/models.py:2328 msgid "Whole Word Search" msgstr "" -#: common/models.py:2302 +#: common/models.py:2329 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2307 +#: common/models.py:2334 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2308 +#: common/models.py:2335 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2313 +#: common/models.py:2340 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2314 +#: common/models.py:2341 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2319 +#: common/models.py:2346 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2320 +#: common/models.py:2347 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2325 +#: common/models.py:2352 msgid "Date Format" msgstr "" -#: common/models.py:2326 +#: common/models.py:2353 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2366 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2340 +#: common/models.py:2367 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2372 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2347 +#: common/models.py:2374 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2353 +#: common/models.py:2380 msgid "Table String Length" msgstr "" -#: common/models.py:2355 +#: common/models.py:2382 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2361 +#: common/models.py:2388 msgid "Default part label template" msgstr "" -#: common/models.py:2362 +#: common/models.py:2389 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2367 +#: common/models.py:2394 msgid "Default stock item template" msgstr "" -#: common/models.py:2369 +#: common/models.py:2396 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2375 +#: common/models.py:2402 msgid "Default stock location label template" msgstr "" -#: common/models.py:2377 +#: common/models.py:2404 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2383 +#: common/models.py:2410 msgid "Receive error reports" msgstr "" -#: common/models.py:2384 +#: common/models.py:2411 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2389 +#: common/models.py:2416 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2417 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2460 msgid "Price break quantity" msgstr "" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3503,23 +3536,23 @@ msgstr "" msgid "Price" msgstr "" -#: common/models.py:2441 +#: common/models.py:2468 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2639 common/models.py:2824 msgid "Endpoint" msgstr "" -#: common/models.py:2613 +#: common/models.py:2640 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2623 +#: common/models.py:2650 msgid "Name for this webhook" msgstr "" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3529,101 +3562,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2627 +#: common/models.py:2654 msgid "Is this webhook active" msgstr "" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2670 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2644 +#: common/models.py:2671 msgid "Token for access" msgstr "" -#: common/models.py:2652 +#: common/models.py:2679 msgid "Secret" msgstr "" -#: common/models.py:2653 +#: common/models.py:2680 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2761 +#: common/models.py:2788 msgid "Message ID" msgstr "" -#: common/models.py:2762 +#: common/models.py:2789 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2770 +#: common/models.py:2797 msgid "Host" msgstr "" -#: common/models.py:2771 +#: common/models.py:2798 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2779 +#: common/models.py:2806 msgid "Header" msgstr "" -#: common/models.py:2780 +#: common/models.py:2807 msgid "Header of this message" msgstr "" -#: common/models.py:2787 +#: common/models.py:2814 msgid "Body" msgstr "" -#: common/models.py:2788 +#: common/models.py:2815 msgid "Body of this message" msgstr "" -#: common/models.py:2798 +#: common/models.py:2825 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2803 +#: common/models.py:2830 msgid "Worked on" msgstr "" -#: common/models.py:2804 +#: common/models.py:2831 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2930 +#: common/models.py:2957 msgid "Id" msgstr "" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2959 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2963 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2965 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2967 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Read" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Was this news item read?" msgstr "" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2987 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3633,31 +3666,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2960 +#: common/models.py:2987 msgid "Image file" msgstr "" -#: common/models.py:3002 +#: common/models.py:3029 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3021 +#: common/models.py:3048 msgid "Unit name" msgstr "" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3029 +#: common/models.py:3056 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3037 +#: common/models.py:3064 msgid "Unit definition" msgstr "" @@ -3961,7 +3994,7 @@ msgid "Link to address information (external)" msgstr "" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" @@ -3972,7 +4005,7 @@ msgstr "" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3987,7 +4020,7 @@ msgid "Select manufacturer" msgstr "" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4022,9 +4055,9 @@ msgstr "" #: company/models.py:615 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2438 templates/js/translated/company.js:1156 +#: stock/models.py:2441 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1519 msgid "Value" msgstr "" @@ -4033,7 +4066,7 @@ msgid "Parameter value" msgstr "" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4059,7 +4092,7 @@ msgstr "" #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4076,7 +4109,7 @@ msgstr "" msgid "Select supplier" msgstr "" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "" @@ -4093,13 +4126,13 @@ msgid "Supplier part description" msgstr "" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:579 msgid "Note" msgstr "" @@ -4112,10 +4145,10 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 -#: templates/js/translated/stock.js:2387 +#: templates/js/translated/stock.js:2423 msgid "Packaging" msgstr "" @@ -4157,7 +4190,7 @@ msgstr "" msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "" @@ -4218,13 +4251,13 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1100 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 #: templates/js/translated/return_order.js:296 #: templates/js/translated/sales_order.js:784 -#: templates/js/translated/stock.js:2923 +#: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:804 msgid "Customer" msgstr "" @@ -4429,8 +4462,9 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "" @@ -4482,7 +4516,7 @@ msgstr "" #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2243 +#: templates/js/translated/stock.js:2279 msgid "Supplier Part" msgstr "" @@ -4528,7 +4562,7 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4577,15 +4611,17 @@ msgstr "" msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 -#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:193 msgid "Stock Items" msgstr "" @@ -4639,8 +4675,8 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" @@ -4665,7 +4701,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "" @@ -4679,8 +4715,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "" @@ -4821,7 +4857,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1674 -#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "" @@ -4830,7 +4866,7 @@ msgstr "" #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 -#: templates/js/translated/stock.js:2905 +#: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "" @@ -4838,11 +4874,11 @@ msgstr "" msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -5029,9 +5065,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2274 +#: templates/js/translated/stock.js:2310 msgid "Purchase Price" msgstr "" @@ -5084,8 +5120,8 @@ msgstr "" msgid "User who checked this shipment" msgstr "" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "" @@ -5133,7 +5169,7 @@ msgstr "" msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "" @@ -5207,159 +5243,159 @@ msgstr "" msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:610 +#: order/serializers.py:632 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1677 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "" @@ -5733,7 +5769,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" @@ -5763,12 +5799,12 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5780,12 +5816,12 @@ msgstr "" #: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 -#: templates/js/translated/stock.js:1999 +#: templates/js/translated/stock.js:2035 msgid "IPN" msgstr "" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" @@ -5861,10 +5897,10 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -5885,17 +5921,17 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3897 msgid "Part IPN" msgstr "" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5973,8 +6009,8 @@ msgstr "" msgid "This option must be selected" msgstr "" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5982,12 +6018,17 @@ msgstr "" msgid "Category" msgstr "" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5995,7 +6036,7 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -6010,7 +6051,8 @@ msgstr "" msgid "Default location for parts in this category" msgstr "" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 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" @@ -6076,7 +6118,7 @@ msgstr "" msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3896 msgid "Part name" msgstr "" @@ -6358,7 +6400,7 @@ msgstr "" #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1732 -#: templates/js/translated/stock.js:2785 +#: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" @@ -6410,586 +6452,602 @@ msgstr "" msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3448 -msgid "Test with this name already exists for this part" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "" -#: part/models.py:3496 +#: part/models.py:3505 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "" -#: part/models.py:3503 +#: part/models.py:3512 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3847 +#: part/models.py:3856 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3885 +#: part/models.py:3894 msgid "Part ID or part name" msgstr "" -#: part/models.py:3886 +#: part/models.py:3895 msgid "Unique part ID value" msgstr "" -#: part/models.py:3888 +#: part/models.py:3897 msgid "Part IPN value" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "Level" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "BOM level" msgstr "" -#: part/models.py:3979 +#: part/models.py:3988 msgid "Select parent part" msgstr "" -#: part/models.py:3989 +#: part/models.py:3998 msgid "Sub part" msgstr "" -#: part/models.py:3990 +#: part/models.py:3999 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4001 +#: part/models.py:4010 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4007 +#: part/models.py:4016 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4013 +#: part/models.py:4022 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4029 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4021 +#: part/models.py:4030 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4028 +#: part/models.py:4037 msgid "BOM item reference" msgstr "" -#: part/models.py:4036 +#: part/models.py:4045 msgid "BOM item notes" msgstr "" -#: part/models.py:4042 +#: part/models.py:4051 msgid "Checksum" msgstr "" -#: part/models.py:4043 +#: part/models.py:4052 msgid "BOM line checksum" msgstr "" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4057 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4049 +#: part/models.py:4058 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4063 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:4055 +#: part/models.py:4064 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4069 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4061 +#: part/models.py:4070 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4146 stock/models.py:649 +#: part/models.py:4155 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4165 part/models.py:4167 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4298 +#: part/models.py:4307 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4319 +#: part/models.py:4328 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4332 +#: part/models.py:4341 msgid "Parent BOM item" msgstr "" -#: part/models.py:4340 +#: part/models.py:4349 msgid "Substitute part" msgstr "" -#: part/models.py:4356 +#: part/models.py:4365 msgid "Part 1" msgstr "" -#: part/models.py:4364 +#: part/models.py:4373 msgid "Part 2" msgstr "" -#: part/models.py:4365 +#: part/models.py:4374 msgid "Select Related Part" msgstr "" -#: part/models.py:4384 +#: part/models.py:4393 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4389 +#: part/models.py:4398 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:432 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:480 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1104 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1078 +#: part/serializers.py:1114 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1088 +#: part/serializers.py:1124 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1647 +#: part/serializers.py:1693 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1659 +#: part/serializers.py:1705 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1694 +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "" @@ -7147,7 +7205,7 @@ msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/stock.js:2179 users/models.py:191 +#: templates/js/translated/stock.js:2215 users/models.py:191 msgid "Stocktake" msgstr "" @@ -7221,7 +7279,7 @@ msgid "Validate BOM" msgstr "" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "" @@ -7405,7 +7463,7 @@ msgstr "" msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "" @@ -7509,7 +7567,7 @@ msgstr "" #: templates/InvenTree/settings/sidebar.html:51 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 -#: templates/js/translated/stock.js:2033 templates/navbar.html:31 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7555,7 +7613,7 @@ msgstr "" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 -#: templates/js/translated/stock.js:2209 +#: templates/js/translated/stock.js:2245 msgid "Last Updated" msgstr "" @@ -7999,7 +8057,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "" @@ -8307,16 +8365,16 @@ msgstr "" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "" @@ -8336,103 +8394,111 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" msgstr "" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" msgstr "" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8499,12 +8565,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1492 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Result" msgstr "" @@ -8531,7 +8597,7 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:168 #: stock/admin.py:162 templates/js/translated/stock.js:700 -#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110 msgid "Serial" msgstr "" @@ -8615,7 +8681,7 @@ msgstr "" #: stock/admin.py:256 stock/models.py:886 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2193 users/models.py:113 +#: templates/js/translated/stock.js:2229 users/models.py:113 msgid "Expiry Date" msgstr "" @@ -8713,7 +8779,7 @@ msgstr "" msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:174 templates/js/translated/stock.js:2745 +#: stock/models.py:174 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" @@ -8722,7 +8788,7 @@ msgstr "" msgid "This is an external stock location" msgstr "" -#: stock/models.py:181 templates/js/translated/stock.js:2754 +#: stock/models.py:181 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" @@ -8739,7 +8805,7 @@ msgstr "" msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:290 msgid "Stock item cannot be created for virtual parts" msgstr "" @@ -8784,7 +8850,7 @@ msgstr "" msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1351 msgid "Packaging this stock item is stored in" msgstr "" @@ -8796,7 +8862,7 @@ msgstr "" msgid "Serial number for this item" msgstr "" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1334 msgid "Batch code for this stock item" msgstr "" @@ -8873,7 +8939,7 @@ msgstr "" msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:529 msgid "Serial numbers already exist" msgstr "" @@ -8905,7 +8971,7 @@ msgstr "" msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1240 msgid "Duplicate stock items" msgstr "" @@ -8929,207 +8995,236 @@ msgstr "" msgid "Entry notes" msgstr "" -#: stock/models.py:2399 +#: stock/models.py:2402 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2405 +#: stock/models.py:2408 msgid "Attachment must be uploaded for this test" msgstr "Lampiran perlu diunggah untuk tes ini" -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Test result" msgstr "" -#: stock/models.py:2439 +#: stock/models.py:2442 msgid "Test output value" msgstr "" -#: stock/models.py:2447 +#: stock/models.py:2450 msgid "Test result attachment" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2454 msgid "Test notes" msgstr "" -#: stock/serializers.py:96 +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "" + +#: stock/models.py:2463 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2469 +msgid "Started" +msgstr "" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:100 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:119 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 +#: stock/serializers.py:151 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:184 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:267 +#: stock/serializers.py:282 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:380 +#: stock/serializers.py:402 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:442 +#: stock/serializers.py:464 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:455 +#: stock/serializers.py:477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:462 +#: stock/serializers.py:484 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:480 +#: stock/serializers.py:502 msgid "Optional note field" msgstr "" -#: stock/serializers.py:490 +#: stock/serializers.py:512 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:545 +#: stock/serializers.py:567 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:574 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:553 +#: stock/serializers.py:575 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:566 +#: stock/serializers.py:588 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:596 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:581 +#: stock/serializers.py:607 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:620 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:628 +#: stock/serializers.py:655 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:663 +#: stock/serializers.py:690 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:676 +#: stock/serializers.py:703 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:693 +#: stock/serializers.py:720 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:724 +#: stock/serializers.py:751 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:761 +#: stock/serializers.py:788 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:767 +#: stock/serializers.py:794 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1036 +#: stock/serializers.py:1069 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1040 +#: stock/serializers.py:1073 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1044 +#: stock/serializers.py:1077 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1068 +#: stock/serializers.py:1101 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1074 +#: stock/serializers.py:1107 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1082 +#: stock/serializers.py:1115 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1125 stock/serializers.py:1379 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1171 +#: stock/serializers.py:1204 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1176 +#: stock/serializers.py:1209 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1177 +#: stock/serializers.py:1210 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1182 +#: stock/serializers.py:1215 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1183 +#: stock/serializers.py:1216 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1193 +#: stock/serializers.py:1226 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1260 +#: stock/serializers.py:1293 msgid "No Change" msgstr "" -#: stock/serializers.py:1289 +#: stock/serializers.py:1322 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1308 +#: stock/serializers.py:1341 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1336 +#: stock/serializers.py:1369 msgid "Stock transaction notes" msgstr "" @@ -9154,7 +9249,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 msgid "Delete Test Data" msgstr "" @@ -9170,15 +9265,15 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:274 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 msgid "Add Test Result" msgstr "" @@ -9201,17 +9296,17 @@ msgid "Stock adjustment actions" msgstr "" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 msgid "Count stock" msgstr "" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:1803 msgid "Add stock" msgstr "" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1776 +#: templates/js/translated/stock.js:1812 msgid "Remove stock" msgstr "" @@ -9220,12 +9315,12 @@ msgid "Serialize stock" msgstr "" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 msgid "Transfer stock" msgstr "" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1884 msgid "Assign to customer" msgstr "" @@ -9364,7 +9459,7 @@ msgid "No stocktake performed" msgstr "" #: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1915 +#: templates/js/translated/stock.js:1951 msgid "stock item" msgstr "" @@ -9469,7 +9564,7 @@ msgid "New Location" msgstr "" #: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2536 +#: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" @@ -10063,7 +10158,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:37 msgid "New Location Type" msgstr "" @@ -10120,7 +10215,7 @@ msgstr "" msgid "Stock Settings" msgstr "" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:33 msgid "Stock Location Types" msgstr "" @@ -10662,7 +10757,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "" @@ -10676,7 +10771,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "" @@ -11051,62 +11146,66 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "" @@ -11389,7 +11488,7 @@ msgstr "" #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 -#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11401,7 +11500,7 @@ msgstr "" msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006 +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" @@ -11449,29 +11548,29 @@ msgstr "" msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "" @@ -11804,15 +11903,15 @@ msgstr "" msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3087 +#: templates/js/translated/forms.js:3103 msgid "Select Columns" msgstr "" @@ -12289,7 +12388,7 @@ msgid "No category" msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 -#: templates/js/translated/stock.js:2633 +#: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" @@ -12301,7 +12400,7 @@ msgstr "" msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" @@ -12313,64 +12412,64 @@ msgstr "" msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" @@ -12907,7 +13006,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1737 +#: templates/js/translated/stock.js:1773 msgid "Shipped to customer" msgstr "" @@ -13165,7 +13264,7 @@ msgstr "" msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" @@ -13189,248 +13288,256 @@ msgstr "" msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1440 +#: templates/js/translated/stock.js:1447 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1443 +#: templates/js/translated/stock.js:1450 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1466 +#: templates/js/translated/stock.js:1473 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1530 +#: templates/js/translated/stock.js:1537 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1677 +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1733 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1729 +#: templates/js/translated/stock.js:1765 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1769 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1741 +#: templates/js/translated/stock.js:1777 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1747 +#: templates/js/translated/stock.js:1783 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1839 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1848 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:1897 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1916 +#: templates/js/translated/stock.js:1952 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1921 +#: templates/js/translated/stock.js:1957 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1932 +#: templates/js/translated/stock.js:1968 msgid "Stock Actions" msgstr "" -#: templates/js/translated/stock.js:1976 +#: templates/js/translated/stock.js:2012 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2054 +#: templates/js/translated/stock.js:2090 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2059 +#: templates/js/translated/stock.js:2095 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2062 +#: templates/js/translated/stock.js:2098 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2065 +#: templates/js/translated/stock.js:2101 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2067 +#: templates/js/translated/stock.js:2103 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2069 +#: templates/js/translated/stock.js:2105 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2072 +#: templates/js/translated/stock.js:2108 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2074 +#: templates/js/translated/stock.js:2110 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2114 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2080 +#: templates/js/translated/stock.js:2116 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2085 +#: templates/js/translated/stock.js:2121 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2087 +#: templates/js/translated/stock.js:2123 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2089 +#: templates/js/translated/stock.js:2125 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2129 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2258 +#: templates/js/translated/stock.js:2294 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2305 +#: templates/js/translated/stock.js:2341 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2433 +#: templates/js/translated/stock.js:2469 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2573 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2692 +#: templates/js/translated/stock.js:2728 msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2810 +#: templates/js/translated/stock.js:2846 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2814 +#: templates/js/translated/stock.js:2850 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:2862 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2848 +#: templates/js/translated/stock.js:2884 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2865 +#: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2880 +#: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2897 +#: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2914 +#: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3005 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2977 +#: templates/js/translated/stock.js:3013 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:3049 +#: templates/js/translated/stock.js:3085 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139 +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:3161 +#: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:3182 +#: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:3183 +#: 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:3185 +#: 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:3186 +#: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:3187 +#: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:3188 +#: 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:3201 +#: templates/js/translated/stock.js:3237 msgid "Select part to install" msgstr "" -#: templates/js/translated/stock.js:3264 +#: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" msgstr "" -#: templates/js/translated/stock.js:3277 +#: templates/js/translated/stock.js:3313 msgid "Selected stock items" msgstr "" -#: templates/js/translated/stock.js:3281 +#: templates/js/translated/stock.js:3317 msgid "Change Stock Status" msgstr "" diff --git a/InvenTree/locale/it/LC_MESSAGES/django.po b/InvenTree/locale/it/LC_MESSAGES/django.po index a4087e5bd8..ff117843a4 100644 --- a/InvenTree/locale/it/LC_MESSAGES/django.po +++ b/InvenTree/locale/it/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 04:05+0000\n" -"PO-Revision-Date: 2024-02-28 07:23\n" +"POT-Creation-Date: 2024-03-19 01:26+0000\n" +"PO-Revision-Date: 2024-03-19 11:51\n" "Last-Translator: \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -30,20 +30,20 @@ msgstr "L'utente non ha i permessi per vedere questo modello" msgid "Invalid unit provided ({unit})" msgstr "" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "Nessun valore specificato" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "Impossibile convertire {original} in {unit}" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" msgstr "Quantità fornita non valida" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" msgstr "Quantità fornita non valida ({exc})" @@ -64,18 +64,18 @@ msgstr "Inserisci la data" #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 #: templates/js/translated/return_order.js:776 #: templates/js/translated/sales_order.js:1067 #: templates/js/translated/sales_order.js:1982 -#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 msgid "Notes" msgstr "Note" @@ -132,42 +132,42 @@ msgstr "L'indirizzo di posta elettronica fornito non è approvato." msgid "Registration is disabled." msgstr "La registrazione è disabilitata." -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "Quantità inserita non valida" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "Numero seriale vuoto" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "Seriale Duplicato" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "Intervallo di gruppo non valido: {group}" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "L'intervallo di gruppo {group} supera la quantità consentita ({expected_quantity})" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "Sequenza di gruppo non valida: {group}" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "Nessun numero di serie trovato" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "Il numero di numeri di serie univoci ({len(serials)}) deve corrispondere alla quantità ({expected_quantity})" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "Rimuovi i tag HTML da questo valore" @@ -203,131 +203,135 @@ msgstr "Il server remoto ha restituito una risposta vuota" msgid "Supplied URL is not a valid image file" msgstr "L'URL fornito non è un file immagine valido" -#: InvenTree/locales.py:16 +#: InvenTree/locales.py:18 msgid "Bulgarian" msgstr "Bulgaro" -#: InvenTree/locales.py:17 +#: InvenTree/locales.py:19 msgid "Czech" msgstr "Ceco" -#: InvenTree/locales.py:18 +#: InvenTree/locales.py:20 msgid "Danish" msgstr "Danese" -#: InvenTree/locales.py:19 +#: InvenTree/locales.py:21 msgid "German" msgstr "Tedesco" -#: InvenTree/locales.py:20 +#: InvenTree/locales.py:22 msgid "Greek" msgstr "Greco" -#: InvenTree/locales.py:21 +#: InvenTree/locales.py:23 msgid "English" msgstr "Inglese" -#: InvenTree/locales.py:22 +#: InvenTree/locales.py:24 msgid "Spanish" msgstr "Spagnolo" -#: InvenTree/locales.py:23 +#: InvenTree/locales.py:25 msgid "Spanish (Mexican)" msgstr "Spagnolo (Messicano)" -#: InvenTree/locales.py:24 +#: InvenTree/locales.py:26 msgid "Farsi / Persian" msgstr "Farsi / Persiano" -#: InvenTree/locales.py:25 +#: InvenTree/locales.py:27 msgid "Finnish" msgstr "Finlandese" -#: InvenTree/locales.py:26 +#: InvenTree/locales.py:28 msgid "French" msgstr "Francese" -#: InvenTree/locales.py:27 +#: InvenTree/locales.py:29 msgid "Hebrew" msgstr "Ebraico" -#: InvenTree/locales.py:28 +#: InvenTree/locales.py:30 msgid "Hindi" msgstr "Hindi" -#: InvenTree/locales.py:29 +#: InvenTree/locales.py:31 msgid "Hungarian" msgstr "Ungherese" -#: InvenTree/locales.py:30 +#: InvenTree/locales.py:32 msgid "Italian" msgstr "Italiano" -#: InvenTree/locales.py:31 +#: InvenTree/locales.py:33 msgid "Japanese" msgstr "Giapponese" -#: InvenTree/locales.py:32 +#: InvenTree/locales.py:34 msgid "Korean" msgstr "Coreano" -#: InvenTree/locales.py:33 +#: InvenTree/locales.py:35 +msgid "Latvian" +msgstr "" + +#: InvenTree/locales.py:36 msgid "Dutch" msgstr "Olandese" -#: InvenTree/locales.py:34 +#: InvenTree/locales.py:37 msgid "Norwegian" msgstr "Norvegese" -#: InvenTree/locales.py:35 +#: InvenTree/locales.py:38 msgid "Polish" msgstr "Polacco" -#: InvenTree/locales.py:36 +#: InvenTree/locales.py:39 msgid "Portuguese" msgstr "Portoghese" -#: InvenTree/locales.py:37 +#: InvenTree/locales.py:40 msgid "Portuguese (Brazilian)" msgstr "Portoghese (Brasile)" -#: InvenTree/locales.py:38 +#: InvenTree/locales.py:41 msgid "Russian" msgstr "Russo" -#: InvenTree/locales.py:39 +#: InvenTree/locales.py:42 msgid "Slovak" msgstr "" -#: InvenTree/locales.py:40 +#: InvenTree/locales.py:43 msgid "Slovenian" msgstr "Sloveno" -#: InvenTree/locales.py:41 +#: InvenTree/locales.py:44 msgid "Serbian" msgstr "Serbo" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:45 msgid "Swedish" msgstr "Svedese" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:46 msgid "Thai" msgstr "Thailandese" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:47 msgid "Turkish" msgstr "Turco" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:48 msgid "Vietnamese" msgstr "Vietnamita" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:49 msgid "Chinese (Simplified)" msgstr "Cinese (Semplificato)" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:50 msgid "Chinese (Traditional)" msgstr "Cinese (Tradizionale)" @@ -391,7 +395,7 @@ msgstr "File mancante" msgid "Missing external link" msgstr "Link esterno mancante" -#: InvenTree/models.py:559 stock/models.py:2446 +#: InvenTree/models.py:559 stock/models.py:2449 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -401,7 +405,7 @@ msgstr "Allegato" msgid "Select file to attach" msgstr "Seleziona file da allegare" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -432,13 +436,13 @@ msgstr "Commento" msgid "File comment" msgstr "Commento del file" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:3000 users/models.py:100 +#: templates/js/translated/stock.js:3036 users/models.py:100 msgid "User" msgstr "Utente" @@ -479,10 +483,10 @@ msgstr "Nomi duplicati non possono esistere sotto lo stesso genitore" msgid "Invalid choice" msgstr "Scelta non valida" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -495,7 +499,7 @@ msgstr "Scelta non valida" #: templates/js/translated/company.js:1155 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Nome" @@ -506,10 +510,10 @@ msgstr "Nome" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -523,7 +527,7 @@ msgstr "Nome" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -531,8 +535,8 @@ msgstr "Nome" #: templates/js/translated/return_order.js:314 #: templates/js/translated/sales_order.js:802 #: templates/js/translated/sales_order.js:1812 -#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021 -#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "Descrizione" @@ -545,7 +549,7 @@ msgid "parent" msgstr "genitore" #: InvenTree/models.py:916 templates/js/translated/part.js:2794 -#: templates/js/translated/stock.js:2721 +#: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Percorso" @@ -581,7 +585,7 @@ msgstr "Errore del server" msgid "An error has been logged by the server." msgstr "Un errore è stato loggato dal server." -#: InvenTree/serializers.py:62 part/models.py:4134 +#: InvenTree/serializers.py:62 part/models.py:4143 msgid "Must be a valid number" msgstr "Deve essere un numero valido" @@ -596,89 +600,89 @@ msgstr "Valuta" msgid "Select currency from available options" msgstr "Selezionare la valuta dalle opzioni disponibili" -#: InvenTree/serializers.py:436 +#: InvenTree/serializers.py:441 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:448 +#: InvenTree/serializers.py:453 msgid "Only superusers can create new users" msgstr "Solo i superutenti possono creare nuovi utenti" -#: InvenTree/serializers.py:467 +#: InvenTree/serializers.py:472 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:469 +#: InvenTree/serializers.py:474 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:476 +#: InvenTree/serializers.py:481 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:537 +#: InvenTree/serializers.py:542 msgid "Filename" msgstr "Nome del file" -#: InvenTree/serializers.py:571 +#: InvenTree/serializers.py:576 msgid "Invalid value" msgstr "Valore non valido" -#: InvenTree/serializers.py:591 +#: InvenTree/serializers.py:596 msgid "Data File" msgstr "File dati" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:597 msgid "Select data file for upload" msgstr "Seleziona un file per il caricamento" -#: InvenTree/serializers.py:609 +#: InvenTree/serializers.py:614 msgid "Unsupported file type" msgstr "Formato file non supportato" -#: InvenTree/serializers.py:615 +#: InvenTree/serializers.py:620 msgid "File is too large" msgstr "File troppo grande" -#: InvenTree/serializers.py:636 +#: InvenTree/serializers.py:641 msgid "No columns found in file" msgstr "Nessun colonna trovata nel file" -#: InvenTree/serializers.py:639 +#: InvenTree/serializers.py:644 msgid "No data rows found in file" msgstr "Nessuna riga di dati trovata nel file" -#: InvenTree/serializers.py:752 +#: InvenTree/serializers.py:757 msgid "No data rows provided" msgstr "Nessun dato fornito" -#: InvenTree/serializers.py:755 +#: InvenTree/serializers.py:760 msgid "No data columns supplied" msgstr "Nessuna colonna di dati fornita" -#: InvenTree/serializers.py:822 +#: InvenTree/serializers.py:827 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Colonna richiesta mancante: '{name}'" -#: InvenTree/serializers.py:831 +#: InvenTree/serializers.py:836 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Colonna duplicata: '{col}'" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:859 msgid "Remote Image" msgstr "Immagine Remota" -#: InvenTree/serializers.py:855 +#: InvenTree/serializers.py:860 msgid "URL of remote image file" msgstr "URL del file immagine remota" -#: InvenTree/serializers.py:873 +#: InvenTree/serializers.py:878 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:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "Controllo in background non riuscito" @@ -818,7 +822,7 @@ msgstr "Diviso dall'elemento genitore" msgid "Split child item" msgstr "Dividi elemento figlio" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 msgid "Merged stock items" msgstr "Elemento stock raggruppato" @@ -838,7 +842,7 @@ msgstr "Build order output completato" msgid "Build order output rejected" msgstr "Ordine di costruzione rifiutato" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 msgid "Consumed by build order" msgstr "Impegnato dall'ordine di costruzione" @@ -938,14 +942,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:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "Consumabile" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -960,7 +964,7 @@ msgid "Tracked" msgstr "Monitorato" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -985,7 +989,7 @@ msgstr "Disponibile" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "Ordine di Produzione" @@ -1014,7 +1018,7 @@ msgstr "Riferimento Ordine Di Produzione" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1044,11 +1048,11 @@ msgstr "Ordine di produzione a cui questa produzione viene assegnata" #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1059,7 +1063,7 @@ msgstr "Ordine di produzione a cui questa produzione viene assegnata" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:267 stock/serializers.py:689 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1086,9 +1090,9 @@ msgstr "Ordine di produzione a cui questa produzione viene assegnata" #: templates/js/translated/sales_order.js:1598 #: templates/js/translated/sales_order.js:1796 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960 -#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054 -#: templates/js/translated/stock.js:3200 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 msgid "Part" msgstr "Articolo" @@ -1146,8 +1150,8 @@ msgstr "Stato Produzione" msgid "Build status code" msgstr "Codice stato di produzione" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Codice Lotto" @@ -1242,53 +1246,53 @@ msgstr "Codice del progetto" msgid "Project code for this build order" msgstr "Codice del progetto per questo ordine di produzione" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" msgstr "L'ordine di produzione {build} è stato completato" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "L'ordine di produzione è stato completato" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "Nessun output di produzione specificato" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "La produzione è stata completata" -#: build/models.py:789 +#: build/models.py:805 msgid "Build output does not match Build Order" msgstr "L'output della produzione non corrisponde all'ordine di compilazione" -#: build/models.py:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 msgid "Quantity must be greater than zero" msgstr "La quantità deve essere maggiore di zero" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 msgid "Quantity cannot be greater than the output quantity" msgstr "La quantità non può essere maggiore della quantità in uscita" -#: build/models.py:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" msgstr "Crea oggetto" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1298,7 +1302,7 @@ msgstr "Crea oggetto" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:463 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1310,7 +1314,7 @@ msgstr "Crea oggetto" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1325,43 +1329,43 @@ msgstr "Crea oggetto" #: templates/js/translated/sales_order.js:1698 #: templates/js/translated/sales_order.js:1824 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 -#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985 -#: templates/js/translated/stock.js:3068 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "Quantità" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" msgstr "Quantità richiesta per l'ordine di costruzione" -#: build/models.py:1381 +#: build/models.py:1397 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:1390 +#: build/models.py:1406 #, 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:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "L'articolo in giacenza è sovrallocato" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "La quantità di assegnazione deve essere maggiore di zero" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "La quantità deve essere 1 per lo stock serializzato" -#: build/models.py:1473 +#: build/models.py:1489 msgid "Selected stock item does not match BOM line" msgstr "L'articolo in stock selezionato non corrisponde alla voce nella BOM" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 @@ -1372,23 +1376,23 @@ msgstr "L'articolo in stock selezionato non corrisponde alla voce nella BOM" #: templates/js/translated/sales_order.js:1605 #: templates/js/translated/sales_order.js:1692 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 -#: templates/js/translated/stock.js:2941 +#: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "Articoli in magazzino" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "Origine giacenza articolo" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "Quantità di magazzino da assegnare per la produzione" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "Installa in" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "Destinazione articolo in giacenza" @@ -1425,8 +1429,8 @@ msgstr "Quantità totale richiesta per articoli rintracciabili" 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:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 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" @@ -1451,10 +1455,10 @@ msgstr "I seguenti numeri di serie sono già esistenti o non sono validi" msgid "A list of build outputs must be provided" msgstr "Deve essere fornito un elenco dei risultati di produzione" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1466,8 +1470,8 @@ msgstr "Deve essere fornito un elenco dei risultati di produzione" #: templates/js/translated/sales_order.js:1627 #: templates/js/translated/sales_order.js:1706 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164 -#: templates/js/translated/stock.js:2835 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 msgid "Location" msgstr "Posizione" @@ -1493,16 +1497,16 @@ msgstr "Posizione per gli output di build completati" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 #: templates/js/translated/purchase_order.js:1723 #: templates/js/translated/return_order.js:331 #: templates/js/translated/sales_order.js:819 -#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959 -#: templates/js/translated/stock.js:3084 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 msgid "Status" msgstr "Stato" @@ -1566,7 +1570,7 @@ msgstr "Accetta che gli elementi in giacenza non sono stati completamente assegn msgid "Required stock has not been fully allocated" msgstr "La giacenza richiesta non è stata completamente assegnata" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "Accetta Incompleta" @@ -1602,11 +1606,11 @@ msgstr "Articolo linea di produzione" 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:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1065 msgid "Item must be in stock" msgstr "L'articolo deve essere disponibile" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Quantità disponibile ({q}) superata" @@ -1619,7 +1623,7 @@ msgstr "L'output di produzione deve essere specificato per l'ubicazione delle pa 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:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "Deve essere indicata l'allocazione dell'articolo" @@ -1659,44 +1663,45 @@ msgstr "Articoli Opzionali" msgid "Allocate optional BOM items to build order" msgstr "Assegna gli elementi opzionali della distinta base all'ordine di produzione" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 #: stock/api.py:745 msgid "BOM Item" msgstr "Distinta base (Bom)" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "Ordinato" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "Disponibilità in magazzino" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "Giacenza richiesta per l'ordine di produzione" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "Ordine di produzione in ritardo" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "L'ordine di produzione {bo} è in ritardo" @@ -1862,7 +1867,7 @@ msgstr "Outputs Completati" #: templates/js/translated/pricing.js:929 #: templates/js/translated/sales_order.js:769 #: templates/js/translated/sales_order.js:992 -#: templates/js/translated/stock.js:2888 +#: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "Ordini di Vendita" @@ -1920,8 +1925,8 @@ msgstr "Articoli Assegnati" #: templates/js/translated/build.js:1377 #: templates/js/translated/model_renderers.js:235 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153 -#: templates/js/translated/stock.js:3091 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" @@ -1990,27 +1995,31 @@ msgstr "Ordina articoli richiesti" msgid "Order Parts" msgstr "Ordine Articoli" -#: build/templates/build/detail.html:210 +#: 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 "Produzione Incompleta" -#: build/templates/build/detail.html:214 +#: build/templates/build/detail.html:219 msgid "Create new build output" msgstr "Crea nuova produzione" -#: build/templates/build/detail.html:215 +#: build/templates/build/detail.html:220 msgid "New Build Output" msgstr "Nuova Produzione" -#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "Produzioni Completate" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2026,15 +2035,15 @@ msgstr "Produzioni Completate" msgid "Attachments" msgstr "Allegati" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "Genera Note" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" msgstr "" @@ -2112,1390 +2121,1414 @@ msgstr "Descrizione del progetto" msgid "User or group responsible for this project" msgstr "" -#: common/models.py:737 +#: common/models.py:744 msgid "Settings key (must be unique - case insensitive)" msgstr "Tasto impostazioni (deve essere univoco - maiuscole e minuscole)" -#: common/models.py:741 +#: common/models.py:748 msgid "Settings value" msgstr "Valore impostazioni" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "Il valore specificato non è un opzione valida" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "Il valore deve essere un valore booleano" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "Il valore deve essere un intero" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "La stringa chiave deve essere univoca" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "Nessun gruppo" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "Un dominio vuoto non è consentito." -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "Nome dominio non valido: {domain}" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "Riavvio richiesto" -#: common/models.py:1231 +#: common/models.py:1238 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:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "Nome Istanza Del Server" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "Descrittore stringa per l'istanza del server" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "Utilizza nome istanza" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "Usa il nome dell'istanza nella barra del titolo" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "Limita visualizzazione `Informazioni`" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "Mostra la modalità `Informazioni` solo ai superusers" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "Nome azienda" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "Nome interno dell'azienda" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "URL Base" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "URL di base per l'istanza del server" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "Valuta predefinita" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1283 +#: common/models.py:1290 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "giorni" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "Scarica dall'URL" -#: common/models.py:1298 +#: common/models.py:1305 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:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "Limite Dimensione Download" -#: common/models.py:1305 +#: common/models.py:1312 msgid "Maximum allowable download size for remote image" msgstr "Dimensione massima consentita per il download dell'immagine remota" -#: common/models.py:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "User-agent utilizzato per scaricare dall'URL" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "Richiesta conferma" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "Richiede una conferma esplicita dell'utente per una determinata azione." -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "Profondità livelli" -#: common/models.py:1332 +#: common/models.py:1339 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:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "Aggiorna intervallo di controllo" -#: common/models.py:1339 +#: common/models.py:1346 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:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "Backup automatico" -#: common/models.py:1346 +#: common/models.py:1353 msgid "Enable automatic backup of database and media files" msgstr "Abilita il backup automatico di database e file multimediali" -#: common/models.py:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "Intervallo Di Backup Automatico" -#: common/models.py:1352 +#: common/models.py:1359 msgid "Specify number of days between automated backup events" msgstr "Definisci i giorni intercorrenti tra un backup automatico e l'altro" -#: common/models.py:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1360 +#: common/models.py:1367 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:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1369 +#: common/models.py:1376 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:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1378 +#: common/models.py:1385 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:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Supporto Codice A Barre" -#: common/models.py:1386 +#: common/models.py:1393 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "Codice a barre inserito scaduto" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "Tempo di ritardo di elaborazione codice a barre" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "Codice a Barre Supporto Webcam" -#: common/models.py:1399 +#: common/models.py:1406 msgid "Allow barcode scanning via webcam in browser" msgstr "Consenti la scansione del codice a barre tramite webcam nel browser" -#: common/models.py:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" msgstr "Abilita il campo revisione per l'articolo" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "IPN Regex" -#: common/models.py:1411 +#: common/models.py:1418 msgid "Regular expression pattern for matching Part IPN" msgstr "Schema di espressione regolare per l'articolo corrispondente IPN" -#: common/models.py:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "Consenti duplicati IPN" -#: common/models.py:1415 +#: common/models.py:1422 msgid "Allow multiple parts to share the same IPN" msgstr "Permetti a più articoli di condividere lo stesso IPN" -#: common/models.py:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "Permetti modifiche al part number interno (IPN)" -#: common/models.py:1421 +#: common/models.py:1428 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:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "Copia I Dati Della distinta base dell'articolo" -#: common/models.py:1427 +#: common/models.py:1434 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:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "Copia I Dati Parametro dell'articolo" -#: common/models.py:1433 +#: common/models.py:1440 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:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "Copia I Dati dell'Articolo Test" -#: common/models.py:1439 +#: common/models.py:1446 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:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "Copia Template Parametri Categoria" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Copy category parameter templates when creating a part" msgstr "Copia i modelli dei parametri categoria quando si crea un articolo" -#: common/models.py:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "Modello" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "Gli articoli sono modelli per impostazione predefinita" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 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:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "Componente" -#: common/models.py:1463 +#: common/models.py:1470 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:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "Acquistabile" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "Gli articoli sono acquistabili per impostazione predefinita" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "Vendibile" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "Gli articoli sono acquistabili per impostazione predefinita" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "Gli articoli sono tracciabili per impostazione predefinita" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "Gli articoli sono virtuali per impostazione predefinita" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "Mostra l'importazione nelle viste" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Display the import wizard in some part views" msgstr "Mostra la procedura guidata di importazione in alcune viste articoli" -#: common/models.py:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "Mostra articoli correlati" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" msgstr "Visualizza parti correlate per ogni articolo" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "Dati iniziali dello stock" -#: common/models.py:1505 +#: common/models.py:1512 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:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Dati iniziali del fornitore" -#: common/models.py:1512 +#: common/models.py:1519 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:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "Formato di visualizzazione del nome articolo" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "Formato per visualizzare il nome dell'articolo" -#: common/models.py:1525 +#: common/models.py:1532 msgid "Part Category Default Icon" msgstr "Icona predefinita Categoria Articolo" -#: common/models.py:1526 +#: common/models.py:1533 msgid "Part category default icon (empty means no icon)" msgstr "Icona predefinita Categoria Articolo (vuoto significa nessuna icona)" -#: common/models.py:1530 +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1532 +#: common/models.py:1539 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1540 +#: common/models.py:1547 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1548 +#: common/models.py:1555 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "Usa Prezzi Fornitore" -#: common/models.py:1556 +#: 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:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "Ignora la Cronologia Acquisti" -#: common/models.py:1564 +#: 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:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "Utilizzare i prezzi degli articoli in stock" -#: common/models.py:1572 +#: 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:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "Età dei prezzi degli articoli in stock" -#: common/models.py:1580 +#: 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:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "Utilizza Variazione di Prezzo" -#: common/models.py:1588 +#: 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:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "Solo Varianti Attive" -#: common/models.py:1595 +#: 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:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1603 +#: 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:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "Prezzi interni" -#: common/models.py:1611 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "Abilita prezzi interni per gli articoli" -#: common/models.py:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "Sovrascrivi Prezzo Interno" -#: common/models.py:1618 +#: 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:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "Abilita stampa etichette" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "Abilita la stampa di etichette dall'interfaccia web" -#: common/models.py:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "Etichetta Immagine DPI" -#: common/models.py:1632 +#: 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:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "Abilita Report di Stampa" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "Abilita generazione di report di stampa" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "Modalità Debug" -#: common/models.py:1645 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "Genera report in modalità debug (output HTML)" -#: common/models.py:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: 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:202 msgid "Page Size" msgstr "Dimensioni pagina" -#: common/models.py:1651 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "Dimensione predefinita della pagina per i report PDF" -#: common/models.py:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "Abilita Rapporto di Prova" -#: common/models.py:1657 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "Abilita generazione di stampe di prova" -#: common/models.py:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "Allega Rapporto di Prova" -#: common/models.py:1664 +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "Seriali Unici Globali" -#: common/models.py:1671 +#: 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:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "Auto Riempimento Numeri Seriali" -#: common/models.py:1677 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "Auto riempimento numeri nel modulo" -#: common/models.py:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "Elimina scorte esaurite" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "Determina il comportamento predefinito quando un elemento stock è esaurito" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "Modello Codice a Barre" -#: common/models.py:1692 +#: 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:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "Scadenza giacenza" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "Abilita funzionalità di scadenza della giacenza" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "Vendi giacenza scaduta" -#: common/models.py:1704 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "Consenti la vendita di stock scaduti" -#: common/models.py:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "Tempo di Scorta del Magazzino" -#: common/models.py:1711 +#: 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:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "Crea giacenza scaduta" -#: common/models.py:1719 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "Permetti produzione con stock scaduto" -#: common/models.py:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "Controllo della proprietà della giacenza" -#: common/models.py:1725 +#: 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:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "Icona Predefinita Ubicazione di Magazzino" -#: common/models.py:1731 +#: 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:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1736 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1741 +#: 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 "Build Order Reference Pattern" msgstr "Modello Di Riferimento Ordine Di Produzione" -#: common/models.py:1743 +#: common/models.py:1764 msgid "Required pattern for generating Build Order reference field" msgstr "Modello richiesto per generare il campo di riferimento ordine di produzione" -#: common/models.py:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1757 +#: common/models.py:1778 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1765 +#: common/models.py:1786 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "Modello Di Riferimento Ordine Di Vendita" -#: common/models.py:1773 +#: common/models.py:1794 msgid "Required pattern for generating Sales Order reference field" msgstr "Modello richiesto per generare il campo di riferimento ordine di vendita" -#: common/models.py:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "Spedizione Predefinita Ordine Di Vendita" -#: common/models.py:1780 +#: common/models.py:1801 msgid "Enable creation of default shipment with sales orders" msgstr "Abilita la creazione di spedizioni predefinite con ordini di vendita" -#: common/models.py:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "Modifica Ordini Di Vendita Completati" -#: common/models.py:1787 +#: common/models.py:1808 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:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "Modello di Riferimento Ordine D'Acquisto" -#: common/models.py:1795 +#: common/models.py:1816 msgid "Required pattern for generating Purchase Order reference field" msgstr "Modello richiesto per generare il campo di riferimento ordine di acquisto" -#: common/models.py:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "Modifica Ordini Di Acquisto Completati" -#: common/models.py:1803 +#: common/models.py:1824 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:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1811 +#: common/models.py:1832 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "Abilita password dimenticata" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" msgstr "Abilita la funzione password dimenticata nelle pagine di accesso" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "Abilita registrazione" -#: common/models.py:1825 +#: common/models.py:1846 msgid "Enable self-registration for users on the login pages" msgstr "Abilita auto-registrazione per gli utenti nelle pagine di accesso" -#: common/models.py:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "SSO abilitato" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "Abilita SSO nelle pagine di accesso" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "Abilita registrazione SSO" -#: common/models.py:1838 +#: common/models.py:1859 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:1844 +#: common/models.py:1865 msgid "Email required" msgstr "Email richiesta" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "Richiedi all'utente di fornire una email al momento dell'iscrizione" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "Riempimento automatico degli utenti SSO" -#: common/models.py:1852 +#: common/models.py:1873 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:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "Posta due volte" -#: common/models.py:1859 +#: common/models.py:1880 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:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "Password due volte" -#: common/models.py:1865 +#: common/models.py:1886 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:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "Domini consentiti" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "Gruppo iscrizione" -#: common/models.py:1879 +#: common/models.py:1900 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:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "Applica MFA" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "Gli utenti devono utilizzare la sicurezza a due fattori." -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "Controlla i plugin all'avvio" -#: common/models.py:1892 +#: common/models.py:1913 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:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "Abilita l'integrazione URL" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "Attiva plugin per aggiungere percorsi URL" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "Attiva integrazione navigazione" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "Abilita i plugin per l'integrazione nella navigazione" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "Abilita l'app integrata" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "Abilita plugin per aggiungere applicazioni" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "Abilita integrazione pianificazione" -#: common/models.py:1929 +#: common/models.py:1950 msgid "Enable plugins to run scheduled tasks" msgstr "Abilita i plugin per eseguire le attività pianificate" -#: common/models.py:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "Abilita eventi integrati" -#: common/models.py:1936 +#: common/models.py:1957 msgid "Enable plugins to respond to internal events" msgstr "Abilita plugin per rispondere agli eventi interni" -#: common/models.py:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "Funzionalità Dell'Inventario" -#: common/models.py:1950 +#: common/models.py:1971 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:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1958 +#: common/models.py:1979 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "Inventario periodico automatico" -#: common/models.py:1966 +#: common/models.py:1987 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:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1974 +#: common/models.py:1995 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:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2029 common/models.py:2429 msgid "Settings key (must be unique - case insensitive" msgstr "Tasto impostazioni (deve essere univoco - maiuscole e minuscole" -#: common/models.py:2043 +#: common/models.py:2070 msgid "Hide inactive parts" msgstr "Nascondi Articoli Inattivi" -#: common/models.py:2045 +#: common/models.py:2072 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2051 +#: common/models.py:2078 msgid "Show subscribed parts" msgstr "Mostra articoli sottoscritti" -#: common/models.py:2052 +#: common/models.py:2079 msgid "Show subscribed parts on the homepage" msgstr "Mostra gli articoli sottoscritti nella homepage" -#: common/models.py:2057 +#: common/models.py:2084 msgid "Show subscribed categories" msgstr "Mostra le categorie sottoscritte" -#: common/models.py:2058 +#: common/models.py:2085 msgid "Show subscribed part categories on the homepage" msgstr "Mostra le categorie dei componenti sottoscritti nella homepage" -#: common/models.py:2063 +#: common/models.py:2090 msgid "Show latest parts" msgstr "Mostra ultimi articoli" -#: common/models.py:2064 +#: common/models.py:2091 msgid "Show latest parts on the homepage" msgstr "Mostra gli ultimi articoli sulla homepage" -#: common/models.py:2069 +#: common/models.py:2096 msgid "Show unvalidated BOMs" msgstr "Mostra distinta base non convalidata" -#: common/models.py:2070 +#: common/models.py:2097 msgid "Show BOMs that await validation on the homepage" msgstr "Mostra le distinte base che attendono la convalida sulla homepage" -#: common/models.py:2075 +#: common/models.py:2102 msgid "Show recent stock changes" msgstr "Mostra le modifiche recenti alle giacenze" -#: common/models.py:2076 +#: common/models.py:2103 msgid "Show recently changed stock items on the homepage" msgstr "Mostra le giacenze modificate di recente nella homepage" -#: common/models.py:2081 +#: common/models.py:2108 msgid "Show low stock" msgstr "Mostra disponibilità scarsa delle giacenze" -#: common/models.py:2082 +#: common/models.py:2109 msgid "Show low stock items on the homepage" msgstr "Mostra disponibilità scarsa degli articoli sulla homepage" -#: common/models.py:2087 +#: common/models.py:2114 msgid "Show depleted stock" msgstr "Mostra scorte esaurite" -#: common/models.py:2088 +#: common/models.py:2115 msgid "Show depleted stock items on the homepage" msgstr "Mostra disponibilità scarsa delle scorte degli articoli sulla homepage" -#: common/models.py:2093 +#: common/models.py:2120 msgid "Show needed stock" msgstr "Mostra scorte necessarie" -#: common/models.py:2094 +#: common/models.py:2121 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:2099 +#: common/models.py:2126 msgid "Show expired stock" msgstr "Mostra scorte esaurite" -#: common/models.py:2100 +#: common/models.py:2127 msgid "Show expired stock items on the homepage" msgstr "Mostra gli articoli stock scaduti nella home page" -#: common/models.py:2105 +#: common/models.py:2132 msgid "Show stale stock" msgstr "Mostra scorte obsolete" -#: common/models.py:2106 +#: common/models.py:2133 msgid "Show stale stock items on the homepage" msgstr "Mostra gli elementi obsoleti esistenti sulla home page" -#: common/models.py:2111 +#: common/models.py:2138 msgid "Show pending builds" msgstr "Mostra produzioni in attesa" -#: common/models.py:2112 +#: common/models.py:2139 msgid "Show pending builds on the homepage" msgstr "Mostra produzioni in attesa sulla homepage" -#: common/models.py:2117 +#: common/models.py:2144 msgid "Show overdue builds" msgstr "Mostra produzioni in ritardo" -#: common/models.py:2118 +#: common/models.py:2145 msgid "Show overdue builds on the homepage" msgstr "Mostra produzioni in ritardo sulla home page" -#: common/models.py:2123 +#: common/models.py:2150 msgid "Show outstanding POs" msgstr "Mostra ordini di produzione inevasi" -#: common/models.py:2124 +#: common/models.py:2151 msgid "Show outstanding POs on the homepage" msgstr "Mostra ordini di produzione inevasi sulla home page" -#: common/models.py:2129 +#: common/models.py:2156 msgid "Show overdue POs" msgstr "Mostra Ordini di Produzione in ritardo" -#: common/models.py:2130 +#: common/models.py:2157 msgid "Show overdue POs on the homepage" msgstr "Mostra Ordini di Produzione in ritardo sulla home page" -#: common/models.py:2135 +#: common/models.py:2162 msgid "Show outstanding SOs" msgstr "Mostra Ordini di Vendita inevasi" -#: common/models.py:2136 +#: common/models.py:2163 msgid "Show outstanding SOs on the homepage" msgstr "Mostra Ordini di Vendita inevasi sulla home page" -#: common/models.py:2141 +#: common/models.py:2168 msgid "Show overdue SOs" msgstr "Mostra Ordini di Vendita in ritardo" -#: common/models.py:2142 +#: common/models.py:2169 msgid "Show overdue SOs on the homepage" msgstr "Mostra Ordini di Vendita in ritardo sulla home page" -#: common/models.py:2147 +#: common/models.py:2174 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2148 +#: common/models.py:2175 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2153 +#: common/models.py:2180 msgid "Show News" msgstr "Mostra Notizie" -#: common/models.py:2154 +#: common/models.py:2181 msgid "Show news on the homepage" msgstr "Mostra notizie sulla home page" -#: common/models.py:2159 +#: common/models.py:2186 msgid "Inline label display" msgstr "Visualizzazione dell'etichetta in linea" -#: common/models.py:2161 +#: common/models.py:2188 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:2167 +#: common/models.py:2194 msgid "Default label printer" msgstr "Stampante per etichette predefinita" -#: common/models.py:2169 +#: common/models.py:2196 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:2175 +#: common/models.py:2202 msgid "Inline report display" msgstr "Visualizzazione dell'etichetta in linea" -#: common/models.py:2177 +#: common/models.py:2204 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:2183 +#: common/models.py:2210 msgid "Search Parts" msgstr "Cerca Articoli" -#: common/models.py:2184 +#: common/models.py:2211 msgid "Display parts in search preview window" msgstr "Mostra articoli della ricerca nella finestra di anteprima" -#: common/models.py:2189 +#: common/models.py:2216 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2190 +#: common/models.py:2217 msgid "Display supplier parts in search preview window" msgstr "Mostra articoli del fornitore nella finestra di anteprima" -#: common/models.py:2195 +#: common/models.py:2222 msgid "Search Manufacturer Parts" msgstr "Cerca Articoli Produttore" -#: common/models.py:2196 +#: common/models.py:2223 msgid "Display manufacturer parts in search preview window" msgstr "Mostra articoli del produttore nella finestra di anteprima" -#: common/models.py:2201 +#: common/models.py:2228 msgid "Hide Inactive Parts" msgstr "Nascondi Articoli Inattivi" -#: common/models.py:2202 +#: common/models.py:2229 msgid "Excluded inactive parts from search preview window" msgstr "Escludi articoli inattivi dalla finestra di anteprima della ricerca" -#: common/models.py:2207 +#: common/models.py:2234 msgid "Search Categories" msgstr "Cerca Categorie" -#: common/models.py:2208 +#: common/models.py:2235 msgid "Display part categories in search preview window" msgstr "Mostra categorie articolo nella finestra di anteprima di ricerca" -#: common/models.py:2213 +#: common/models.py:2240 msgid "Search Stock" msgstr "Cerca Giacenze" -#: common/models.py:2214 +#: common/models.py:2241 msgid "Display stock items in search preview window" msgstr "Mostra articoli in giacenza nella finestra di anteprima della ricerca" -#: common/models.py:2219 +#: common/models.py:2246 msgid "Hide Unavailable Stock Items" msgstr "Nascondi elementi non disponibili" -#: common/models.py:2221 +#: common/models.py:2248 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:2227 +#: common/models.py:2254 msgid "Search Locations" msgstr "Cerca Ubicazioni" -#: common/models.py:2228 +#: common/models.py:2255 msgid "Display stock locations in search preview window" msgstr "Mostra ubicazioni delle giacenze nella finestra di anteprima di ricerca" -#: common/models.py:2233 +#: common/models.py:2260 msgid "Search Companies" msgstr "Cerca Aziende" -#: common/models.py:2234 +#: common/models.py:2261 msgid "Display companies in search preview window" msgstr "Mostra le aziende nella finestra di anteprima di ricerca" -#: common/models.py:2239 +#: common/models.py:2266 msgid "Search Build Orders" msgstr "Cerca Ordini Di Produzione" -#: common/models.py:2240 +#: common/models.py:2267 msgid "Display build orders in search preview window" msgstr "Mostra gli ordini di produzione nella finestra di anteprima di ricerca" -#: common/models.py:2245 +#: common/models.py:2272 msgid "Search Purchase Orders" msgstr "Cerca Ordini di Acquisto" -#: common/models.py:2246 +#: common/models.py:2273 msgid "Display purchase orders in search preview window" msgstr "Mostra gli ordini di acquisto nella finestra di anteprima di ricerca" -#: common/models.py:2251 +#: common/models.py:2278 msgid "Exclude Inactive Purchase Orders" msgstr "Escludi Ordini D'Acquisto Inattivi" -#: common/models.py:2253 +#: common/models.py:2280 msgid "Exclude inactive purchase orders from search preview window" msgstr "Escludi ordini di acquisto inattivi dalla finestra di anteprima di ricerca" -#: common/models.py:2259 +#: common/models.py:2286 msgid "Search Sales Orders" msgstr "Cerca Ordini Di Vendita" -#: common/models.py:2260 +#: common/models.py:2287 msgid "Display sales orders in search preview window" msgstr "Visualizzazione degli ordini di vendita nella finestra di anteprima della ricerca" -#: common/models.py:2265 +#: common/models.py:2292 msgid "Exclude Inactive Sales Orders" msgstr "Escludi Ordini Di Vendita Inattivi" -#: common/models.py:2267 +#: common/models.py:2294 msgid "Exclude inactive sales orders from search preview window" msgstr "Escludi ordini di vendita inattivi dalla finestra di anteprima di ricerca" -#: common/models.py:2273 +#: common/models.py:2300 msgid "Search Return Orders" msgstr "Cerca Ordini Di Reso" -#: common/models.py:2274 +#: common/models.py:2301 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2279 +#: common/models.py:2306 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2281 +#: common/models.py:2308 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2287 +#: common/models.py:2314 msgid "Search Preview Results" msgstr "Risultati Dell'Anteprima Di Ricerca" -#: common/models.py:2289 +#: common/models.py:2316 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:2295 +#: common/models.py:2322 msgid "Regex Search" msgstr "Ricerca con regex" -#: common/models.py:2296 +#: common/models.py:2323 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2301 +#: common/models.py:2328 msgid "Whole Word Search" msgstr "" -#: common/models.py:2302 +#: common/models.py:2329 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2307 +#: common/models.py:2334 msgid "Show Quantity in Forms" msgstr "Mostra quantità nei moduli" -#: common/models.py:2308 +#: common/models.py:2335 msgid "Display available part quantity in some forms" msgstr "Visualizzare la quantità di pezzi disponibili in alcuni moduli" -#: common/models.py:2313 +#: common/models.py:2340 msgid "Escape Key Closes Forms" msgstr "Il tasto Esc chiude i moduli" -#: common/models.py:2314 +#: common/models.py:2341 msgid "Use the escape key to close modal forms" msgstr "Utilizzare il tasto Esc per chiudere i moduli modali" -#: common/models.py:2319 +#: common/models.py:2346 msgid "Fixed Navbar" msgstr "Barra di navigazione fissa" -#: common/models.py:2320 +#: common/models.py:2347 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:2325 +#: common/models.py:2352 msgid "Date Format" msgstr "Formato Data" -#: common/models.py:2326 +#: common/models.py:2353 msgid "Preferred format for displaying dates" msgstr "Formato predefinito per visualizzare le date" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2366 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Programmazione Prodotto" -#: common/models.py:2340 +#: common/models.py:2367 msgid "Display part scheduling information" msgstr "Mostra informazioni sulla pianificazione del prodotto" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2372 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Inventario Prodotto" -#: common/models.py:2347 +#: common/models.py:2374 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:2353 +#: common/models.py:2380 msgid "Table String Length" msgstr "Lunghezza Stringa Tabella" -#: common/models.py:2355 +#: common/models.py:2382 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2361 +#: common/models.py:2388 msgid "Default part label template" msgstr "" -#: common/models.py:2362 +#: common/models.py:2389 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2367 +#: common/models.py:2394 msgid "Default stock item template" msgstr "" -#: common/models.py:2369 +#: common/models.py:2396 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2375 +#: common/models.py:2402 msgid "Default stock location label template" msgstr "" -#: common/models.py:2377 +#: common/models.py:2404 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2383 +#: common/models.py:2410 msgid "Receive error reports" msgstr "" -#: common/models.py:2384 +#: common/models.py:2411 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2389 +#: common/models.py:2416 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2417 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2460 msgid "Price break quantity" msgstr "Quantità prezzo limite" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3503,23 +3536,23 @@ msgstr "Quantità prezzo limite" msgid "Price" msgstr "Prezzo" -#: common/models.py:2441 +#: common/models.py:2468 msgid "Unit price at specified quantity" msgstr "Prezzo unitario in quantità specificata" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2639 common/models.py:2824 msgid "Endpoint" msgstr "Scadenza" -#: common/models.py:2613 +#: common/models.py:2640 msgid "Endpoint at which this webhook is received" msgstr "Scadenza in cui questa notifica viene ricevuta" -#: common/models.py:2623 +#: common/models.py:2650 msgid "Name for this webhook" msgstr "Nome per questa notifica" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3529,101 +3562,101 @@ msgstr "Nome per questa notifica" msgid "Active" msgstr "Attivo" -#: common/models.py:2627 +#: common/models.py:2654 msgid "Is this webhook active" msgstr "È questa notifica attiva" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2670 users/models.py:148 msgid "Token" msgstr "Token" -#: common/models.py:2644 +#: common/models.py:2671 msgid "Token for access" msgstr "Token per l'accesso" -#: common/models.py:2652 +#: common/models.py:2679 msgid "Secret" msgstr "Segreto" -#: common/models.py:2653 +#: common/models.py:2680 msgid "Shared secret for HMAC" msgstr "Segreto condiviso per HMAC" -#: common/models.py:2761 +#: common/models.py:2788 msgid "Message ID" msgstr "ID Messaggio" -#: common/models.py:2762 +#: common/models.py:2789 msgid "Unique identifier for this message" msgstr "Identificatore unico per questo messaggio" -#: common/models.py:2770 +#: common/models.py:2797 msgid "Host" msgstr "Host" -#: common/models.py:2771 +#: common/models.py:2798 msgid "Host from which this message was received" msgstr "Host da cui questo messaggio è stato ricevuto" -#: common/models.py:2779 +#: common/models.py:2806 msgid "Header" msgstr "Intestazione" -#: common/models.py:2780 +#: common/models.py:2807 msgid "Header of this message" msgstr "Intestazione di questo messaggio" -#: common/models.py:2787 +#: common/models.py:2814 msgid "Body" msgstr "Contenuto" -#: common/models.py:2788 +#: common/models.py:2815 msgid "Body of this message" msgstr "Contenuto di questo messaggio" -#: common/models.py:2798 +#: common/models.py:2825 msgid "Endpoint on which this message was received" msgstr "Scadenza in cui questo messaggio è stato ricevuto" -#: common/models.py:2803 +#: common/models.py:2830 msgid "Worked on" msgstr "Lavorato il" -#: common/models.py:2804 +#: common/models.py:2831 msgid "Was the work on this message finished?" msgstr "Il lavoro su questo messaggio è terminato?" -#: common/models.py:2930 +#: common/models.py:2957 msgid "Id" msgstr "Id" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2959 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "Titolo" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2963 templates/js/translated/news.js:60 msgid "Published" msgstr "Pubblicato" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2965 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2967 templates/js/translated/news.js:52 msgid "Summary" msgstr "Riepilogo" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Read" msgstr "Letto" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Was this news item read?" msgstr "Queste notizie sull'elemento sono state lette?" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2987 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3633,31 +3666,31 @@ msgstr "Queste notizie sull'elemento sono state lette?" msgid "Image" msgstr "Immagine" -#: common/models.py:2960 +#: common/models.py:2987 msgid "Image file" msgstr "File immagine" -#: common/models.py:3002 +#: common/models.py:3029 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3021 +#: common/models.py:3048 msgid "Unit name" msgstr "" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3029 +#: common/models.py:3056 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3037 +#: common/models.py:3064 msgid "Unit definition" msgstr "" @@ -3961,7 +3994,7 @@ msgid "Link to address information (external)" msgstr "" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Articolo di base" @@ -3972,7 +4005,7 @@ msgstr "Seleziona articolo" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3987,7 +4020,7 @@ msgid "Select manufacturer" msgstr "Seleziona Produttore" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4022,9 +4055,9 @@ msgstr "Nome parametro" #: company/models.py:615 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2438 templates/js/translated/company.js:1156 +#: stock/models.py:2441 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1519 msgid "Value" msgstr "Valore" @@ -4033,7 +4066,7 @@ msgid "Parameter value" msgstr "Valore del parametro" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4059,7 +4092,7 @@ msgstr "L'articolo del costruttore collegato deve riferirsi alla stesso articolo #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4076,7 +4109,7 @@ msgstr "Fornitore" msgid "Select supplier" msgstr "Seleziona fornitore" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "Unità di giacenza magazzino fornitore" @@ -4093,13 +4126,13 @@ msgid "Supplier part description" msgstr "Descrizione articolo fornitore" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:579 msgid "Note" msgstr "Nota" @@ -4112,10 +4145,10 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "Onere minimo (ad esempio tassa di stoccaggio)" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 -#: templates/js/translated/stock.js:2387 +#: templates/js/translated/stock.js:2423 msgid "Packaging" msgstr "Confezionamento" @@ -4157,7 +4190,7 @@ msgstr "Disponibilità Aggiornata" msgid "Date of last update of availability data" msgstr "Data dell’ultimo aggiornamento dei dati sulla disponibilità" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "Valuta predefinita utilizzata per questo fornitore" @@ -4218,13 +4251,13 @@ msgstr "Elimina immagine" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1100 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 #: templates/js/translated/return_order.js:296 #: templates/js/translated/sales_order.js:784 -#: templates/js/translated/stock.js:2923 +#: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:804 msgid "Customer" msgstr "Cliente" @@ -4429,8 +4462,9 @@ 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/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "Fornitori" @@ -4482,7 +4516,7 @@ msgstr "" #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2243 +#: templates/js/translated/stock.js:2279 msgid "Supplier Part" msgstr "Articolo Fornitore" @@ -4528,7 +4562,7 @@ 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:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4577,15 +4611,17 @@ msgstr "" msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 -#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:193 msgid "Stock Items" msgstr "Articoli in magazzino" @@ -4639,8 +4675,8 @@ msgstr "Etichetta" msgid "Label template file" msgstr "File modello etichetta" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "Abilitato" @@ -4665,7 +4701,7 @@ msgstr "Altezza [mm]" msgid "Label height, specified in mm" msgstr "Larghezza dell'etichetta, specificata in mm" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "Formato del nome file" @@ -4679,8 +4715,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "Filtri" @@ -4821,7 +4857,7 @@ msgstr "Nessun ordine di acquisto corrispondente trovato" #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1674 -#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "Ordine D'Acquisto" @@ -4830,7 +4866,7 @@ msgstr "Ordine D'Acquisto" #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 -#: templates/js/translated/stock.js:2905 +#: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "Restituisci ordine" @@ -4838,11 +4874,11 @@ msgstr "Restituisci ordine" msgid "Total price for this order" msgstr "Prezzo totale dell'ordine" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -5029,9 +5065,9 @@ msgstr "Ricevuto" msgid "Number of items received" msgstr "Numero di elementi ricevuti" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2274 +#: templates/js/translated/stock.js:2310 msgid "Purchase Price" msgstr "Prezzo di Acquisto" @@ -5084,8 +5120,8 @@ msgstr "Verificato Da" msgid "User who checked this shipment" msgstr "Utente che ha controllato questa spedizione" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "Spedizione" @@ -5133,7 +5169,7 @@ msgstr "Impossibile allocare stock a una riga senza un articolo" msgid "Allocation quantity cannot exceed stock quantity" msgstr "La quantità di ripartizione non puo' superare la disponibilità della giacenza" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "La quantità deve essere 1 per l'elemento serializzato" @@ -5207,159 +5243,159 @@ msgstr "" msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "L'ordine non può essere cancellato" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" msgstr "Consenti di chiudere l'ordine con elementi di riga incompleti" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "L'ordine ha elementi di riga incompleti" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "L'ordine non è aperto" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "Valuta prezzo d'acquisto" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "L'articolo del fornitore deve essere specificato" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "L'ordine di acquisto deve essere specificato" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "Il fornitore deve essere abbinato all'ordine d'acquisto" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "L'ordine di acquisto deve essere abbinato al fornitore" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "Elemento Riga" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "L'elemento di riga non corrisponde all'ordine di acquisto" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "Seleziona la posizione di destinazione per gli elementi ricevuti" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 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:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 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:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Codice a Barre" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "Codice a barre scansionato" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "Il codice a barre è già in uso" -#: order/serializers.py:610 +#: order/serializers.py:632 msgid "An integer quantity must be provided for trackable parts" msgstr "Deve essere fornita una quantità intera per gli articoli rintracciabili" -#: order/serializers.py:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "Gli elementi di linea devono essere forniti" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "La destinazione deve essere specificata" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "I valori dei codici a barre forniti devono essere univoci" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "Valuta prezzo di vendita" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "Nessun dettaglio di spedizione fornito" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "L'elemento di riga non è associato a questo ordine" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "La quantità deve essere positiva" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "Inserisci i numeri di serie da assegnare" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "La spedizione è già stata spedita" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "La spedizione non è associata con questo ordine" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "Nessuna corrispondenza trovata per i seguenti numeri di serie" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "I seguenti numeri di serie sono già assegnati" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1677 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "" @@ -5733,7 +5769,7 @@ msgid "Pending Shipments" msgstr "Spedizione in sospeso" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "Azioni" @@ -5763,12 +5799,12 @@ 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:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "Codice Articolo" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "Nome Articolo" @@ -5780,12 +5816,12 @@ msgstr "Descrizione Articolo" #: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 -#: templates/js/translated/stock.js:1999 +#: templates/js/translated/stock.js:2035 msgid "IPN" msgstr "IPN - Numero di riferimento interno" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "Revisione" @@ -5861,10 +5897,10 @@ msgstr "Nome Principale" msgid "Category Path" msgstr "Percorso Categoria" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -5885,17 +5921,17 @@ msgstr "ID Elemento Distinta Base" msgid "Parent IPN" msgstr "IPN Principale" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3897 msgid "Part IPN" msgstr "IPN Articolo" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "Prezzo Minimo" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5973,8 +6009,8 @@ msgstr "Convalida l'intera Fattura dei Materiali" msgid "This option must be selected" msgstr "Questa opzione deve essere selezionata" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5982,12 +6018,17 @@ msgstr "Questa opzione deve essere selezionata" msgid "Category" msgstr "Categoria" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Posizione Predefinita" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "Giacenze Totali" @@ -5995,7 +6036,7 @@ msgstr "Giacenze Totali" msgid "Input quantity for price calculation" msgstr "Digita la quantità per il calcolo del prezzo" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Categoria Articoli" @@ -6010,7 +6051,8 @@ msgstr "Categorie Articolo" msgid "Default location for parts in this category" msgstr "Posizione predefinita per gli articoli di questa categoria" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 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" @@ -6076,7 +6118,7 @@ msgstr "Un articolo con questo Nome, IPN e Revisione esiste già." msgid "Parts cannot be assigned to structural part categories!" msgstr "Gli articoli non possono essere assegnati a categorie articolo principali!" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3896 msgid "Part name" msgstr "Nome articolo" @@ -6358,7 +6400,7 @@ msgstr "Totale delle scorte disponibili al momento dell'inventario" #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1732 -#: templates/js/translated/stock.js:2785 +#: templates/js/translated/stock.js:2821 msgid "Date" msgstr "Data" @@ -6410,586 +6452,602 @@ msgstr "Numero di articoli oggetto d'inventario" msgid "User who requested this stocktake report" msgstr "Utente che ha richiesto questo report inventario" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 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:3448 -msgid "Test with this name already exists for this part" -msgstr "Una prova con questo nome esiste già per questo articolo" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" +msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "Nome Test" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "Inserisci un nome per la prova" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "Descrizione Di Prova" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "Inserisci descrizione per questa prova" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Richiesto" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "Questa prova è necessaria per passare?" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "Valore richiesto" -#: part/models.py:3496 +#: part/models.py:3505 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:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "Allegato Richiesto" -#: part/models.py:3503 +#: part/models.py:3512 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:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "Il nome del modello del parametro deve essere univoco" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "Nome Parametro" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "Descrizione del parametro" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "Articolo principale" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "Modello Parametro" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "Dati" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "Valore del Parametro" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "Valore Predefinito" -#: part/models.py:3847 +#: part/models.py:3856 msgid "Default Parameter Value" msgstr "Valore Parametro Predefinito" -#: part/models.py:3885 +#: part/models.py:3894 msgid "Part ID or part name" msgstr "ID articolo o nome articolo" -#: part/models.py:3886 +#: part/models.py:3895 msgid "Unique part ID value" msgstr "Valore ID articolo univoco" -#: part/models.py:3888 +#: part/models.py:3897 msgid "Part IPN value" msgstr "Valore IPN articolo" -#: part/models.py:3889 +#: part/models.py:3898 msgid "Level" msgstr "Livello" -#: part/models.py:3889 +#: part/models.py:3898 msgid "BOM level" msgstr "Livello distinta base" -#: part/models.py:3979 +#: part/models.py:3988 msgid "Select parent part" msgstr "Seleziona articolo principale" -#: part/models.py:3989 +#: part/models.py:3998 msgid "Sub part" msgstr "Articolo subordinato" -#: part/models.py:3990 +#: part/models.py:3999 msgid "Select part to be used in BOM" msgstr "Seleziona l'articolo da utilizzare nella Distinta Base" -#: part/models.py:4001 +#: part/models.py:4010 msgid "BOM quantity for this BOM item" msgstr "Quantità Distinta Base per questo elemento Distinta Base" -#: part/models.py:4007 +#: part/models.py:4016 msgid "This BOM item is optional" msgstr "Questo elemento della Distinta Base è opzionale" -#: part/models.py:4013 +#: part/models.py:4022 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:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4029 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Eccedenza" -#: part/models.py:4021 +#: part/models.py:4030 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Quantità stimata scarti di produzione (assoluta o percentuale)" -#: part/models.py:4028 +#: part/models.py:4037 msgid "BOM item reference" msgstr "Riferimento Elemento Distinta Base" -#: part/models.py:4036 +#: part/models.py:4045 msgid "BOM item notes" msgstr "Note Elemento Distinta Base" -#: part/models.py:4042 +#: part/models.py:4051 msgid "Checksum" msgstr "Codice di controllo" -#: part/models.py:4043 +#: part/models.py:4052 msgid "BOM line checksum" msgstr "Codice di controllo Distinta Base" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4057 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "Convalidato" -#: part/models.py:4049 +#: part/models.py:4058 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4063 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:4055 +#: part/models.py:4064 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:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4069 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Consenti Le Varianti" -#: part/models.py:4061 +#: part/models.py:4070 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:4146 stock/models.py:649 +#: part/models.py:4155 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" msgstr "La quantità deve essere un valore intero per gli articoli rintracciabili" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4165 part/models.py:4167 msgid "Sub part must be specified" msgstr "L'articolo subordinato deve essere specificato" -#: part/models.py:4298 +#: part/models.py:4307 msgid "BOM Item Substitute" msgstr "Elemento Distinta Base Sostituito" -#: part/models.py:4319 +#: part/models.py:4328 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:4332 +#: part/models.py:4341 msgid "Parent BOM item" msgstr "Elemento principale Distinta Base" -#: part/models.py:4340 +#: part/models.py:4349 msgid "Substitute part" msgstr "Sostituisci l'Articolo" -#: part/models.py:4356 +#: part/models.py:4365 msgid "Part 1" msgstr "Articolo 1" -#: part/models.py:4364 +#: part/models.py:4373 msgid "Part 2" msgstr "Articolo 2" -#: part/models.py:4365 +#: part/models.py:4374 msgid "Select Related Part" msgstr "Seleziona Prodotto Relativo" -#: part/models.py:4384 +#: part/models.py:4393 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:4389 +#: part/models.py:4398 msgid "Duplicate relationship already exists" msgstr "La relazione duplicata esiste già" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 msgid "Purchase currency of this stock item" msgstr "Valuta di acquisto di questo articolo in stock" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "Articolo Originale" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "Seleziona l'articolo originale da duplicare" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "Copia immagine" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "Copia immagine dall'articolo originale" -#: part/serializers.py:432 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:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "Copia fattura dei materiali dall'articolo originale" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "Copia parametri" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "Copia i dati dei parametri dall'articolo originale" -#: part/serializers.py:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "Quantità iniziale" -#: part/serializers.py:462 +#: part/serializers.py:480 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:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "Ubicazione Iniziale Magazzino" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "Specificare l'ubicazione iniziale del magazzino per questo Articolo" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "Seleziona il fornitore (o lascia vuoto per saltare)" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "Seleziona il produttore (o lascia vuoto per saltare)" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "Codice articolo Produttore" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "L'azienda selezionata non è un fornitore valido" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "L'azienda selezionata non è un produttore valido" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "L'articolo del produttore che corrisponde a questo MPN esiste già" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "L'articolo del fornitore che corrisponde a questo SKU esiste già" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "Duplica articolo" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "Copia i dati iniziali da un altro Articolo" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "Stock iniziale" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "Crea Articolo con quantità di scorta iniziale" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "Informazioni Fornitore" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "Aggiungi le informazioni iniziali del fornitore per questo articolo" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "Copia Parametri Categoria" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" msgstr "Copia i parametri dai modelli della categoria articolo selezionata" -#: part/serializers.py:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1104 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:1078 +#: part/serializers.py:1114 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:1088 +#: part/serializers.py:1124 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:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "Genera Report" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "Genera file di report contenente dati di inventario calcolati" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "Aggiorna Articoli" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "Aggiorna gli articoli specificati con i dati calcolati di inventario" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "La funzione Inventario non è abilitata" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "Aggiorna" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "Aggiorna i prezzi per questo articolo" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "Seleziona l'articolo da cui copiare la distinta base" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "Rimuovi Dati Esistenti" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" msgstr "Rimuovi elementi distinta base esistenti prima di copiare" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "Includi Ereditato" -#: part/serializers.py:1647 +#: part/serializers.py:1693 msgid "Include BOM items which are inherited from templated parts" msgstr "Includi gli elementi Distinta Base ereditati da prodotti template" -#: part/serializers.py:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "Salta Righe Non Valide" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "Abilita questa opzione per saltare le righe non valide" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "Copia Articoli sostitutivi" -#: part/serializers.py:1659 +#: part/serializers.py:1705 msgid "Copy substitute parts when duplicate BOM items" msgstr "Copia articoli sostitutivi quando duplichi gli elementi distinta base" -#: part/serializers.py:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "Cancella Distinta Base esistente" -#: part/serializers.py:1694 +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "Rimuovi elementi distinta base esistenti prima del caricamento" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "Nessuna colonna articolo specificata" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "Trovati più articoli corrispondenti" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "Nessun articolo corrispondente trovato" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "L'articolo non è indicato come componente" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "Quantità non fornita" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "Quantità non valida" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "Almeno un elemento della distinta base è richiesto" @@ -7147,7 +7205,7 @@ 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 #: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/stock.js:2179 users/models.py:191 +#: templates/js/translated/stock.js:2215 users/models.py:191 msgid "Stocktake" msgstr "Inventario" @@ -7221,7 +7279,7 @@ msgid "Validate BOM" msgstr "Valida Distinta Base" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "Aggiungi elemento Distinta Base" @@ -7405,7 +7463,7 @@ msgstr "Assegnato agli Ordini di Produzione" msgid "Allocated to Sales Orders" msgstr "Assegnato agli Ordini di Vendita" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "Puoi produrre" @@ -7509,7 +7567,7 @@ msgstr "Varianti" #: templates/InvenTree/settings/sidebar.html:51 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 -#: templates/js/translated/stock.js:2033 templates/navbar.html:31 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 msgid "Stock" msgstr "Magazzino" @@ -7555,7 +7613,7 @@ msgstr "Modifica" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 -#: templates/js/translated/stock.js:2209 +#: templates/js/translated/stock.js:2245 msgid "Last Updated" msgstr "Ultimo aggiornamento" @@ -7999,7 +8057,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "" @@ -8307,16 +8365,16 @@ msgstr "" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "Nessun oggetto valido fornito nel modello" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "Il file del modello '{template}' è mancante o non esiste" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "Report test" @@ -8336,103 +8394,111 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "Nome modello" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "File modello di report" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "Descrizione del modello report" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "Numero di revisione del rapporto (auto-incrementi)" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "Sequenza per generare i nomi dei file report" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "Modello report abilitato" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "Filtri di ricerca elementi di stock (elenco separato da virgole key=coppia di valori)" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "Includi Test Installati" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "Includi i risultati dei test per gli elementi stock installati all'interno dell'elemento assemblato" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "Filtri di produzione" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "Filtri di ricerca produzione (elenco separato da virgole key=coppia di valori" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "Filtri Articolo" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "Filtri di ricerca articolo (elenco separato da virgole key=coppia di valori" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "Ordine di Acquisto filtra la ricerca" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "Ordine di Vendita filtra la ricerca" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" msgstr "Snippet" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "Report file snippet" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "Descrizione file snippet" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" msgstr "Risorsa" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "Report file risorsa" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "File risorsa descrizione" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8499,12 +8565,12 @@ msgid "Test Results" msgstr "Risultati Test" #: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1492 msgid "Test" msgstr "Test" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Result" msgstr "Risultato" @@ -8531,7 +8597,7 @@ msgstr "Elementi installati" #: report/templates/report/inventree_test_report_base.html:168 #: stock/admin.py:162 templates/js/translated/stock.js:700 -#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110 msgid "Serial" msgstr "Seriale" @@ -8615,7 +8681,7 @@ msgstr "Elimina al esaurimento" #: stock/admin.py:256 stock/models.py:886 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2193 users/models.py:113 +#: templates/js/translated/stock.js:2229 users/models.py:113 msgid "Expiry Date" msgstr "Data di Scadenza" @@ -8713,7 +8779,7 @@ msgstr "Seleziona Owner" 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:174 templates/js/translated/stock.js:2745 +#: stock/models.py:174 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "Esterno" @@ -8722,7 +8788,7 @@ msgstr "Esterno" msgid "This is an external stock location" msgstr "Si tratta di una posizione esterna al magazzino" -#: stock/models.py:181 templates/js/translated/stock.js:2754 +#: stock/models.py:181 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" @@ -8739,7 +8805,7 @@ msgstr "Non puoi rendere strutturale questa posizione di magazzino perché alcun 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:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:290 msgid "Stock item cannot be created for virtual parts" msgstr "Non è possibile creare un elemento di magazzino per articoli virtuali" @@ -8784,7 +8850,7 @@ msgstr "Seleziona un fornitore articolo corrispondente per questo elemento di ma msgid "Where is this stock item located?" msgstr "Dove si trova questo articolo di magazzino?" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1351 msgid "Packaging this stock item is stored in" msgstr "Imballaggio di questo articolo di magazzino è collocato in" @@ -8796,7 +8862,7 @@ msgstr "Questo elemento è stato installato su un altro elemento?" msgid "Serial number for this item" msgstr "Numero di serie per questo elemento" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1334 msgid "Batch code for this stock item" msgstr "Codice lotto per questo elemento di magazzino" @@ -8873,7 +8939,7 @@ msgstr "I numeri di serie devono essere numeri interi" msgid "Quantity does not match serial numbers" msgstr "La quantità non corrisponde ai numeri di serie" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:529 msgid "Serial numbers already exist" msgstr "Numeri di serie già esistenti" @@ -8905,7 +8971,7 @@ msgstr "L'elemento di magazzino è attualmente in produzione" msgid "Serialized stock cannot be merged" msgstr "Il magazzino serializzato non può essere unito" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1240 msgid "Duplicate stock items" msgstr "Duplica elementi di magazzino" @@ -8929,207 +8995,236 @@ msgstr "Le giacenze non possono essere spostate perché non disponibili" msgid "Entry notes" msgstr "Note d'ingresso" -#: stock/models.py:2399 +#: stock/models.py:2402 msgid "Value must be provided for this test" msgstr "Il valore deve essere fornito per questo test" -#: stock/models.py:2405 +#: stock/models.py:2408 msgid "Attachment must be uploaded for this test" msgstr "L'allegato deve essere caricato per questo test" -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Test result" msgstr "Risultato Test" -#: stock/models.py:2439 +#: stock/models.py:2442 msgid "Test output value" msgstr "Test valore output" -#: stock/models.py:2447 +#: stock/models.py:2450 msgid "Test result attachment" msgstr "Risultato della prova allegato" -#: stock/models.py:2451 +#: stock/models.py:2454 msgid "Test notes" msgstr "Note del test" -#: stock/serializers.py:96 +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "" + +#: stock/models.py:2463 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2469 +msgid "Started" +msgstr "" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:100 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:119 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 +#: stock/serializers.py:151 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:184 msgid "Serial number is too large" msgstr "Il numero di serie è troppo grande" -#: stock/serializers.py:267 +#: stock/serializers.py:282 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:380 +#: stock/serializers.py:402 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:442 +#: stock/serializers.py:464 msgid "Enter number of stock items to serialize" msgstr "Inserisci il numero di elementi di magazzino da serializzare" -#: stock/serializers.py:455 +#: stock/serializers.py:477 #, 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:462 +#: stock/serializers.py:484 msgid "Enter serial numbers for new items" msgstr "Inserisci i numeri di serie per i nuovi elementi" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 msgid "Destination stock location" msgstr "Posizione magazzino di destinazione" -#: stock/serializers.py:480 +#: stock/serializers.py:502 msgid "Optional note field" msgstr "Note opzionali elemento" -#: stock/serializers.py:490 +#: stock/serializers.py:512 msgid "Serial numbers cannot be assigned to this part" msgstr "Numeri di serie non possono essere assegnati a questo articolo" -#: stock/serializers.py:545 +#: stock/serializers.py:567 msgid "Select stock item to install" msgstr "Seleziona elementi di magazzino da installare" -#: stock/serializers.py:552 +#: stock/serializers.py:574 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:553 +#: stock/serializers.py:575 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 msgid "Add transaction note (optional)" msgstr "Aggiungi nota di transazione (opzionale)" -#: stock/serializers.py:566 +#: stock/serializers.py:588 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:596 msgid "Stock item is unavailable" msgstr "Elemento di magazzino non disponibile" -#: stock/serializers.py:581 +#: stock/serializers.py:607 msgid "Selected part is not in the Bill of Materials" msgstr "L'articolo selezionato non è nella Fattura dei Materiali" -#: stock/serializers.py:593 +#: stock/serializers.py:620 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:628 +#: stock/serializers.py:655 msgid "Destination location for uninstalled item" msgstr "Posizione di destinazione per gli elementi disinstallati" -#: stock/serializers.py:663 +#: stock/serializers.py:690 msgid "Select part to convert stock item into" msgstr "Seleziona l'articolo in cui convertire l'elemento di magazzino" -#: stock/serializers.py:676 +#: stock/serializers.py:703 msgid "Selected part is not a valid option for conversion" msgstr "L'articolo selezionato non è una valida opzione per la conversione" -#: stock/serializers.py:693 +#: stock/serializers.py:720 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:724 +#: stock/serializers.py:751 msgid "Destination location for returned item" msgstr "Posizione di destinazione per l'elemento restituito" -#: stock/serializers.py:761 +#: stock/serializers.py:788 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:767 +#: stock/serializers.py:794 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Sottoallocazioni" -#: stock/serializers.py:1036 +#: stock/serializers.py:1069 msgid "Part must be salable" msgstr "L'articolo deve essere vendibile" -#: stock/serializers.py:1040 +#: stock/serializers.py:1073 msgid "Item is allocated to a sales order" msgstr "L'elemento è assegnato a un ordine di vendita" -#: stock/serializers.py:1044 +#: stock/serializers.py:1077 msgid "Item is allocated to a build order" msgstr "Elemento assegnato a un ordine di costruzione" -#: stock/serializers.py:1068 +#: stock/serializers.py:1101 msgid "Customer to assign stock items" msgstr "Cliente a cui assegnare elementi di magazzino" -#: stock/serializers.py:1074 +#: stock/serializers.py:1107 msgid "Selected company is not a customer" msgstr "L'azienda selezionata non è un cliente" -#: stock/serializers.py:1082 +#: stock/serializers.py:1115 msgid "Stock assignment notes" msgstr "Note sull'assegnazione delle scorte" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1125 stock/serializers.py:1379 msgid "A list of stock items must be provided" msgstr "Deve essere fornito un elenco degli elementi di magazzino" -#: stock/serializers.py:1171 +#: stock/serializers.py:1204 msgid "Stock merging notes" msgstr "Note di fusione di magazzino" -#: stock/serializers.py:1176 +#: stock/serializers.py:1209 msgid "Allow mismatched suppliers" msgstr "Consenti fornitori non corrispondenti" -#: stock/serializers.py:1177 +#: stock/serializers.py:1210 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:1182 +#: stock/serializers.py:1215 msgid "Allow mismatched status" msgstr "Consenti stato non corrispondente" -#: stock/serializers.py:1183 +#: stock/serializers.py:1216 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:1193 +#: stock/serializers.py:1226 msgid "At least two stock items must be provided" msgstr "Devono essere riforniti almeno due elementi in magazzino" -#: stock/serializers.py:1260 +#: stock/serializers.py:1293 msgid "No Change" msgstr "" -#: stock/serializers.py:1289 +#: stock/serializers.py:1322 msgid "StockItem primary key value" msgstr "Valore di chiave primaria StockItem" -#: stock/serializers.py:1308 +#: stock/serializers.py:1341 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1336 +#: stock/serializers.py:1369 msgid "Stock transaction notes" msgstr "Note sugli spostamenti di magazzino" @@ -9154,7 +9249,7 @@ msgstr "Dati di Test" msgid "Test Report" msgstr "Rapporto del Test" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 msgid "Delete Test Data" msgstr "Elimina Dati di Test" @@ -9170,15 +9265,15 @@ msgstr "Note Elemento di magazzino" msgid "Installed Stock Items" msgstr "Elementi di magazzino installati" -#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 msgid "Install Stock Item" msgstr "Installa Elemento Magazzino" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:274 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:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 msgid "Add Test Result" msgstr "" @@ -9201,17 +9296,17 @@ msgid "Stock adjustment actions" msgstr "Azioni adeguamento giacenza" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 msgid "Count stock" msgstr "Conta giacenza" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:1803 msgid "Add stock" msgstr "Aggiungi giacenza" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1776 +#: templates/js/translated/stock.js:1812 msgid "Remove stock" msgstr "Rimuovi giacenza" @@ -9220,12 +9315,12 @@ msgid "Serialize stock" msgstr "Serializza magazzino" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 msgid "Transfer stock" msgstr "Trasferisci giacenza" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1884 msgid "Assign to customer" msgstr "Assegna al cliente" @@ -9364,7 +9459,7 @@ msgid "No stocktake performed" msgstr "Nessun inventario eseguito" #: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1915 +#: templates/js/translated/stock.js:1951 msgid "stock item" msgstr "" @@ -9469,7 +9564,7 @@ msgid "New Location" msgstr "Nuova Posizione" #: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2536 +#: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" @@ -10063,7 +10158,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:37 msgid "New Location Type" msgstr "" @@ -10120,7 +10215,7 @@ msgstr "Impostazioni Ordine di Vendita" msgid "Stock Settings" msgstr "Impostazioni Magazzino" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:33 msgid "Stock Location Types" msgstr "" @@ -10662,7 +10757,7 @@ msgid "The following parts are low on required stock" msgstr "I seguenti articoli sono pochi nel magazzino richiesto" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "Quantità richiesta" @@ -10676,7 +10771,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:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "Quantità minima" @@ -11051,62 +11146,66 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "" @@ -11389,7 +11488,7 @@ msgstr "" #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 -#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11401,7 +11500,7 @@ msgstr "" msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006 +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" @@ -11449,29 +11548,29 @@ msgstr "" msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "" @@ -11804,15 +11903,15 @@ msgstr "" msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3087 +#: templates/js/translated/forms.js:3103 msgid "Select Columns" msgstr "" @@ -12289,7 +12388,7 @@ msgid "No category" msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 -#: templates/js/translated/stock.js:2633 +#: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" @@ -12301,7 +12400,7 @@ msgstr "" msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" @@ -12313,64 +12412,64 @@ msgstr "" msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" @@ -12907,7 +13006,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1737 +#: templates/js/translated/stock.js:1773 msgid "Shipped to customer" msgstr "" @@ -13165,7 +13264,7 @@ msgstr "" msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" @@ -13189,248 +13288,256 @@ msgstr "" msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1440 +#: templates/js/translated/stock.js:1447 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1443 +#: templates/js/translated/stock.js:1450 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1466 +#: templates/js/translated/stock.js:1473 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1530 +#: templates/js/translated/stock.js:1537 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1677 +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1733 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1729 +#: templates/js/translated/stock.js:1765 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1769 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1741 +#: templates/js/translated/stock.js:1777 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1747 +#: templates/js/translated/stock.js:1783 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1839 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1848 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:1897 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1916 +#: templates/js/translated/stock.js:1952 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1921 +#: templates/js/translated/stock.js:1957 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1932 +#: templates/js/translated/stock.js:1968 msgid "Stock Actions" msgstr "" -#: templates/js/translated/stock.js:1976 +#: templates/js/translated/stock.js:2012 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2054 +#: templates/js/translated/stock.js:2090 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2059 +#: templates/js/translated/stock.js:2095 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2062 +#: templates/js/translated/stock.js:2098 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2065 +#: templates/js/translated/stock.js:2101 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2067 +#: templates/js/translated/stock.js:2103 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2069 +#: templates/js/translated/stock.js:2105 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2072 +#: templates/js/translated/stock.js:2108 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2074 +#: templates/js/translated/stock.js:2110 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2114 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2080 +#: templates/js/translated/stock.js:2116 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2085 +#: templates/js/translated/stock.js:2121 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2087 +#: templates/js/translated/stock.js:2123 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2089 +#: templates/js/translated/stock.js:2125 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2129 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2258 +#: templates/js/translated/stock.js:2294 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2305 +#: templates/js/translated/stock.js:2341 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2433 +#: templates/js/translated/stock.js:2469 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2573 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2692 +#: templates/js/translated/stock.js:2728 msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2810 +#: templates/js/translated/stock.js:2846 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2814 +#: templates/js/translated/stock.js:2850 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:2862 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2848 +#: templates/js/translated/stock.js:2884 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2865 +#: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2880 +#: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2897 +#: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2914 +#: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3005 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2977 +#: templates/js/translated/stock.js:3013 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:3049 +#: templates/js/translated/stock.js:3085 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139 +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:3161 +#: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:3182 +#: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:3183 +#: 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:3185 +#: 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:3186 +#: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:3187 +#: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:3188 +#: 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:3201 +#: templates/js/translated/stock.js:3237 msgid "Select part to install" msgstr "" -#: templates/js/translated/stock.js:3264 +#: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" msgstr "" -#: templates/js/translated/stock.js:3277 +#: templates/js/translated/stock.js:3313 msgid "Selected stock items" msgstr "" -#: templates/js/translated/stock.js:3281 +#: templates/js/translated/stock.js:3317 msgid "Change Stock Status" msgstr "" diff --git a/InvenTree/locale/ja/LC_MESSAGES/django.po b/InvenTree/locale/ja/LC_MESSAGES/django.po index 241084973d..cbfc394fad 100644 --- a/InvenTree/locale/ja/LC_MESSAGES/django.po +++ b/InvenTree/locale/ja/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 04:05+0000\n" -"PO-Revision-Date: 2024-02-28 07:23\n" +"POT-Creation-Date: 2024-03-19 01:26+0000\n" +"PO-Revision-Date: 2024-03-19 11:51\n" "Last-Translator: \n" "Language-Team: Japanese\n" "Language: ja_JP\n" @@ -30,20 +30,20 @@ msgstr "ユーザーにこのモデルを表示する権限がありません" msgid "Invalid unit provided ({unit})" msgstr "" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "値がありません" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" msgstr "" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" msgstr "" @@ -64,18 +64,18 @@ msgstr "日付を入力する" #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 #: templates/js/translated/return_order.js:776 #: templates/js/translated/sales_order.js:1067 #: templates/js/translated/sales_order.js:1982 -#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 msgid "Notes" msgstr "メモ" @@ -132,42 +132,42 @@ msgstr "指定されたメールドメインは承認されていません。" msgid "Registration is disabled." msgstr "" -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "数量コードが無効です" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "シリアル番号は空です" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "シリアル番号が見つかりません" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "この値からHTMLタグを削除" @@ -203,131 +203,135 @@ msgstr "リモートサーバーが空のレスポンスを返しました" msgid "Supplied URL is not a valid image file" msgstr "指定されたURLは有効な画像ファイルではありません" -#: InvenTree/locales.py:16 +#: InvenTree/locales.py:18 msgid "Bulgarian" msgstr "" -#: InvenTree/locales.py:17 +#: InvenTree/locales.py:19 msgid "Czech" msgstr "チェコ語" -#: InvenTree/locales.py:18 +#: InvenTree/locales.py:20 msgid "Danish" msgstr "" -#: InvenTree/locales.py:19 +#: InvenTree/locales.py:21 msgid "German" msgstr "ドイツ語" -#: InvenTree/locales.py:20 +#: InvenTree/locales.py:22 msgid "Greek" msgstr "ギリシャ語" -#: InvenTree/locales.py:21 +#: InvenTree/locales.py:23 msgid "English" msgstr "英語" -#: InvenTree/locales.py:22 +#: InvenTree/locales.py:24 msgid "Spanish" msgstr "スペイン語" -#: InvenTree/locales.py:23 +#: InvenTree/locales.py:25 msgid "Spanish (Mexican)" msgstr "スペイン語(メキシコ)" -#: InvenTree/locales.py:24 +#: InvenTree/locales.py:26 msgid "Farsi / Persian" msgstr "" -#: InvenTree/locales.py:25 +#: InvenTree/locales.py:27 msgid "Finnish" msgstr "" -#: InvenTree/locales.py:26 +#: InvenTree/locales.py:28 msgid "French" msgstr "フランス語" -#: InvenTree/locales.py:27 +#: InvenTree/locales.py:29 msgid "Hebrew" msgstr "ヘブライ語" -#: InvenTree/locales.py:28 +#: InvenTree/locales.py:30 msgid "Hindi" msgstr "ヒンディー語" -#: InvenTree/locales.py:29 +#: InvenTree/locales.py:31 msgid "Hungarian" msgstr "ハンガリー語" -#: InvenTree/locales.py:30 +#: InvenTree/locales.py:32 msgid "Italian" msgstr "イタリア語" -#: InvenTree/locales.py:31 +#: InvenTree/locales.py:33 msgid "Japanese" msgstr "日本語" -#: InvenTree/locales.py:32 +#: InvenTree/locales.py:34 msgid "Korean" msgstr "韓国語" -#: InvenTree/locales.py:33 +#: InvenTree/locales.py:35 +msgid "Latvian" +msgstr "" + +#: InvenTree/locales.py:36 msgid "Dutch" msgstr "オランダ語" -#: InvenTree/locales.py:34 +#: InvenTree/locales.py:37 msgid "Norwegian" msgstr "ノルウェー語" -#: InvenTree/locales.py:35 +#: InvenTree/locales.py:38 msgid "Polish" msgstr "ポーランド語" -#: InvenTree/locales.py:36 +#: InvenTree/locales.py:39 msgid "Portuguese" msgstr "ポルトガル語" -#: InvenTree/locales.py:37 +#: InvenTree/locales.py:40 msgid "Portuguese (Brazilian)" msgstr "ポルトガル語 (ブラジル)" -#: InvenTree/locales.py:38 +#: InvenTree/locales.py:41 msgid "Russian" msgstr "ロシア語" -#: InvenTree/locales.py:39 +#: InvenTree/locales.py:42 msgid "Slovak" msgstr "" -#: InvenTree/locales.py:40 +#: InvenTree/locales.py:43 msgid "Slovenian" msgstr "スロベニア語" -#: InvenTree/locales.py:41 +#: InvenTree/locales.py:44 msgid "Serbian" msgstr "" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:45 msgid "Swedish" msgstr "スウェーデン語" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:46 msgid "Thai" msgstr "タイ語" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:47 msgid "Turkish" msgstr "トルコ語" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:48 msgid "Vietnamese" msgstr "ベトナム語" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:49 msgid "Chinese (Simplified)" msgstr "" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:50 msgid "Chinese (Traditional)" msgstr "" @@ -391,7 +395,7 @@ msgstr "ファイルがありません" msgid "Missing external link" msgstr "外部リンクが見つかりません。" -#: InvenTree/models.py:559 stock/models.py:2446 +#: InvenTree/models.py:559 stock/models.py:2449 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -401,7 +405,7 @@ msgstr "添付ファイル" msgid "Select file to attach" msgstr "添付ファイルを選択" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -432,13 +436,13 @@ msgstr "コメント:" msgid "File comment" msgstr "ファイルコメント" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:3000 users/models.py:100 +#: templates/js/translated/stock.js:3036 users/models.py:100 msgid "User" msgstr "ユーザー" @@ -479,10 +483,10 @@ msgstr "" msgid "Invalid choice" msgstr "無効な選択です" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -495,7 +499,7 @@ msgstr "無効な選択です" #: templates/js/translated/company.js:1155 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "お名前" @@ -506,10 +510,10 @@ msgstr "お名前" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -523,7 +527,7 @@ msgstr "お名前" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -531,8 +535,8 @@ msgstr "お名前" #: templates/js/translated/return_order.js:314 #: templates/js/translated/sales_order.js:802 #: templates/js/translated/sales_order.js:1812 -#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021 -#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "説明" @@ -545,7 +549,7 @@ msgid "parent" msgstr "親" #: InvenTree/models.py:916 templates/js/translated/part.js:2794 -#: templates/js/translated/stock.js:2721 +#: templates/js/translated/stock.js:2757 msgid "Path" msgstr "" @@ -581,7 +585,7 @@ msgstr "" msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:62 part/models.py:4134 +#: InvenTree/serializers.py:62 part/models.py:4143 msgid "Must be a valid number" msgstr "有効な数字でなければなりません" @@ -596,89 +600,89 @@ msgstr "" msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:436 +#: InvenTree/serializers.py:441 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:448 +#: InvenTree/serializers.py:453 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:467 +#: InvenTree/serializers.py:472 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:469 +#: InvenTree/serializers.py:474 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:476 +#: InvenTree/serializers.py:481 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:537 +#: InvenTree/serializers.py:542 msgid "Filename" msgstr "ファイル名" -#: InvenTree/serializers.py:571 +#: InvenTree/serializers.py:576 msgid "Invalid value" msgstr "無効な値です。" -#: InvenTree/serializers.py:591 +#: InvenTree/serializers.py:596 msgid "Data File" msgstr "データファイル" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:597 msgid "Select data file for upload" msgstr "アップロードするファイルを選択" -#: InvenTree/serializers.py:609 +#: InvenTree/serializers.py:614 msgid "Unsupported file type" msgstr "サポートされていないファイル形式" -#: InvenTree/serializers.py:615 +#: InvenTree/serializers.py:620 msgid "File is too large" msgstr "ファイルサイズが大きすぎます" -#: InvenTree/serializers.py:636 +#: InvenTree/serializers.py:641 msgid "No columns found in file" msgstr "ファイルに列が見つかりません" -#: InvenTree/serializers.py:639 +#: InvenTree/serializers.py:644 msgid "No data rows found in file" msgstr "ファイルにデータ行がみつかりません" -#: InvenTree/serializers.py:752 +#: InvenTree/serializers.py:757 msgid "No data rows provided" msgstr "データが入力されていません" -#: InvenTree/serializers.py:755 +#: InvenTree/serializers.py:760 msgid "No data columns supplied" msgstr "データ列が指定されていません" -#: InvenTree/serializers.py:822 +#: InvenTree/serializers.py:827 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "必須の列がありません: {name}" -#: InvenTree/serializers.py:831 +#: InvenTree/serializers.py:836 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "{col} 列が重複しています。" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:859 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:855 +#: InvenTree/serializers.py:860 msgid "URL of remote image file" msgstr "外部画像ファイルのURL" -#: InvenTree/serializers.py:873 +#: InvenTree/serializers.py:878 msgid "Downloading images from remote URL is not enabled" msgstr "外部URLからの画像ダウンロードは許可されていません" -#: InvenTree/status.py:66 part/serializers.py:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "バックグラウンドワーカーのチェックに失敗しました" @@ -818,7 +822,7 @@ msgstr "親アイテムから分割する" msgid "Split child item" msgstr "子項目を分割" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 msgid "Merged stock items" msgstr "商品在庫をマージしました" @@ -838,7 +842,7 @@ msgstr "組立注文の出力が完了しました" msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 msgid "Consumed by build order" msgstr "" @@ -938,14 +942,14 @@ msgstr "InvenTree について" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -960,7 +964,7 @@ msgid "Tracked" msgstr "" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -985,7 +989,7 @@ msgstr "" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "組立注文" @@ -1014,7 +1018,7 @@ msgstr "" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1044,11 +1048,11 @@ msgstr "" #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1059,7 +1063,7 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:267 stock/serializers.py:689 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1086,9 +1090,9 @@ msgstr "" #: templates/js/translated/sales_order.js:1598 #: templates/js/translated/sales_order.js:1796 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960 -#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054 -#: templates/js/translated/stock.js:3200 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 msgid "Part" msgstr "パーツ" @@ -1146,8 +1150,8 @@ msgstr "組立状況" msgid "Build status code" msgstr "" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" @@ -1242,53 +1246,53 @@ msgstr "" msgid "Project code for this build order" msgstr "" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "" -#: build/models.py:789 +#: build/models.py:805 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" msgstr "" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1298,7 +1302,7 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:463 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1310,7 +1314,7 @@ msgstr "" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1325,43 +1329,43 @@ msgstr "" #: templates/js/translated/sales_order.js:1698 #: templates/js/translated/sales_order.js:1824 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 -#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985 -#: templates/js/translated/stock.js:3068 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "数量" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1381 +#: build/models.py:1397 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1390 +#: build/models.py:1406 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1473 +#: build/models.py:1489 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 @@ -1372,23 +1376,23 @@ msgstr "" #: templates/js/translated/sales_order.js:1605 #: templates/js/translated/sales_order.js:1692 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 -#: templates/js/translated/stock.js:2941 +#: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "在庫商品" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "" @@ -1425,8 +1429,8 @@ msgstr "" msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "シリアル番号" @@ -1451,10 +1455,10 @@ msgstr "" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1466,8 +1470,8 @@ msgstr "" #: templates/js/translated/sales_order.js:1627 #: templates/js/translated/sales_order.js:1706 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164 -#: templates/js/translated/stock.js:2835 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 msgid "Location" msgstr "" @@ -1493,16 +1497,16 @@ msgstr "" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 #: templates/js/translated/purchase_order.js:1723 #: templates/js/translated/return_order.js:331 #: templates/js/translated/sales_order.js:819 -#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959 -#: templates/js/translated/stock.js:3084 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 msgid "Status" msgstr "ステータス" @@ -1566,7 +1570,7 @@ msgstr "" msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "" @@ -1602,11 +1606,11 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1065 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" @@ -1619,7 +1623,7 @@ msgstr "" msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "" @@ -1659,44 +1663,45 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 #: stock/api.py:745 msgid "BOM Item" msgstr "" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1862,7 +1867,7 @@ msgstr "" #: templates/js/translated/pricing.js:929 #: templates/js/translated/sales_order.js:769 #: templates/js/translated/sales_order.js:992 -#: templates/js/translated/stock.js:2888 +#: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "" @@ -1920,8 +1925,8 @@ msgstr "" #: templates/js/translated/build.js:1377 #: templates/js/translated/model_renderers.js:235 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153 -#: templates/js/translated/stock.js:3091 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" @@ -1990,27 +1995,31 @@ msgstr "注文必須パーツ" msgid "Order Parts" msgstr "パーツの注文" -#: build/templates/build/detail.html:210 -msgid "Incomplete Build Outputs" -msgstr "" - -#: build/templates/build/detail.html:214 -msgid "Create new build output" +#: 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:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2026,15 +2035,15 @@ msgstr "" msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" msgstr "" @@ -2112,1390 +2121,1414 @@ msgstr "" msgid "User or group responsible for this project" msgstr "" -#: common/models.py:737 +#: common/models.py:744 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:741 +#: common/models.py:748 msgid "Settings value" msgstr "" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "" -#: common/models.py:1231 +#: common/models.py:1238 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1283 +#: common/models.py:1290 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "" -#: common/models.py:1298 +#: common/models.py:1305 msgid "Allow download of remote images and files from external URL" msgstr "外部URLからの画像ダウンロードを許可する" -#: common/models.py:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "" -#: common/models.py:1305 +#: common/models.py:1312 msgid "Maximum allowable download size for remote image" msgstr "外部URL画像の最大サイズ" -#: common/models.py:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "" -#: common/models.py:1332 +#: common/models.py:1339 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "" -#: common/models.py:1339 +#: common/models.py:1346 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "" -#: common/models.py:1346 +#: common/models.py:1353 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1352 +#: common/models.py:1359 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1360 +#: common/models.py:1367 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1369 +#: common/models.py:1376 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1378 +#: common/models.py:1385 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1386 +#: common/models.py:1393 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1399 +#: common/models.py:1406 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "" -#: common/models.py:1411 +#: common/models.py:1418 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1415 +#: common/models.py:1422 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1421 +#: common/models.py:1428 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1427 +#: common/models.py:1434 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1433 +#: common/models.py:1440 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1439 +#: common/models.py:1446 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "テンプレート" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "パーツはデフォルトのテンプレートです" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 msgid "Parts can be assembled from other components by default" msgstr "パーツはデフォルトで他のコンポーネントから組み立てることができます" -#: common/models.py:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "コンポーネント" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Parts can be used as sub-components by default" msgstr "パーツはデフォルトでサブコンポーネントとして使用できます" -#: common/models.py:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "購入可能" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "パーツはデフォルトで購入可能です" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "販売可能" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "パーツはデフォルトで販売可能です" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "パーツはデフォルトで追跡可能です" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1505 +#: common/models.py:1512 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1512 +#: common/models.py:1519 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "" -#: common/models.py:1525 +#: common/models.py:1532 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1526 +#: common/models.py:1533 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1530 +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1532 +#: common/models.py:1539 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1540 +#: common/models.py:1547 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1548 +#: common/models.py:1555 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1564 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1580 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1588 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1595 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1603 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1611 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1618 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1632 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "デバッグモード" -#: common/models.py:1645 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: 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:202 msgid "Page Size" msgstr "" -#: common/models.py:1651 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1657 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1664 +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1671 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "シリアル番号を自動入力" -#: common/models.py:1677 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1692 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1704 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1711 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1719 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1725 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1731 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1736 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1741 +#: 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 "Build Order Reference Pattern" msgstr "" -#: common/models.py:1743 +#: common/models.py:1764 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1757 +#: common/models.py:1778 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1765 +#: common/models.py:1786 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1773 +#: common/models.py:1794 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1780 +#: common/models.py:1801 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1787 +#: common/models.py:1808 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1795 +#: common/models.py:1816 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1803 +#: common/models.py:1824 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1811 +#: common/models.py:1832 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "" -#: common/models.py:1825 +#: common/models.py:1846 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1838 +#: common/models.py:1859 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1844 +#: common/models.py:1865 msgid "Email required" msgstr "メールアドレスは必須です" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1852 +#: common/models.py:1873 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "" -#: common/models.py:1859 +#: common/models.py:1880 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "" -#: common/models.py:1865 +#: common/models.py:1886 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "" -#: common/models.py:1879 +#: common/models.py:1900 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1892 +#: common/models.py:1913 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1929 +#: common/models.py:1950 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "" -#: common/models.py:1936 +#: common/models.py:1957 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1950 +#: common/models.py:1971 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1958 +#: common/models.py:1979 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1966 +#: common/models.py:1987 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1974 +#: common/models.py:1995 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2029 common/models.py:2429 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2043 +#: common/models.py:2070 msgid "Hide inactive parts" msgstr "非アクティブな部品を非表示" -#: common/models.py:2045 +#: common/models.py:2072 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2051 +#: common/models.py:2078 msgid "Show subscribed parts" msgstr "購読中の部品を表示" -#: common/models.py:2052 +#: common/models.py:2079 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2057 +#: common/models.py:2084 msgid "Show subscribed categories" msgstr "購読中のカテゴリを表示" -#: common/models.py:2058 +#: common/models.py:2085 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2063 +#: common/models.py:2090 msgid "Show latest parts" msgstr "" -#: common/models.py:2064 +#: common/models.py:2091 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2069 +#: common/models.py:2096 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2070 +#: common/models.py:2097 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2075 +#: common/models.py:2102 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2076 +#: common/models.py:2103 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2081 +#: common/models.py:2108 msgid "Show low stock" msgstr "" -#: common/models.py:2082 +#: common/models.py:2109 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2087 +#: common/models.py:2114 msgid "Show depleted stock" msgstr "" -#: common/models.py:2088 +#: common/models.py:2115 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2093 +#: common/models.py:2120 msgid "Show needed stock" msgstr "" -#: common/models.py:2094 +#: common/models.py:2121 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2099 +#: common/models.py:2126 msgid "Show expired stock" msgstr "" -#: common/models.py:2100 +#: common/models.py:2127 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2105 +#: common/models.py:2132 msgid "Show stale stock" msgstr "" -#: common/models.py:2106 +#: common/models.py:2133 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2111 +#: common/models.py:2138 msgid "Show pending builds" msgstr "" -#: common/models.py:2112 +#: common/models.py:2139 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2117 +#: common/models.py:2144 msgid "Show overdue builds" msgstr "" -#: common/models.py:2118 +#: common/models.py:2145 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2123 +#: common/models.py:2150 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2124 +#: common/models.py:2151 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2129 +#: common/models.py:2156 msgid "Show overdue POs" msgstr "" -#: common/models.py:2130 +#: common/models.py:2157 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2135 +#: common/models.py:2162 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2136 +#: common/models.py:2163 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2141 +#: common/models.py:2168 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2142 +#: common/models.py:2169 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2147 +#: common/models.py:2174 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2148 +#: common/models.py:2175 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2153 +#: common/models.py:2180 msgid "Show News" msgstr "" -#: common/models.py:2154 +#: common/models.py:2181 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2159 +#: common/models.py:2186 msgid "Inline label display" msgstr "" -#: common/models.py:2161 +#: common/models.py:2188 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2167 +#: common/models.py:2194 msgid "Default label printer" msgstr "" -#: common/models.py:2169 +#: common/models.py:2196 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2175 +#: common/models.py:2202 msgid "Inline report display" msgstr "" -#: common/models.py:2177 +#: common/models.py:2204 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2183 +#: common/models.py:2210 msgid "Search Parts" msgstr "" -#: common/models.py:2184 +#: common/models.py:2211 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2189 +#: common/models.py:2216 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2190 +#: common/models.py:2217 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2195 +#: common/models.py:2222 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2196 +#: common/models.py:2223 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2201 +#: common/models.py:2228 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2202 +#: common/models.py:2229 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2207 +#: common/models.py:2234 msgid "Search Categories" msgstr "" -#: common/models.py:2208 +#: common/models.py:2235 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2213 +#: common/models.py:2240 msgid "Search Stock" msgstr "" -#: common/models.py:2214 +#: common/models.py:2241 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2219 +#: common/models.py:2246 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2221 +#: common/models.py:2248 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2227 +#: common/models.py:2254 msgid "Search Locations" msgstr "" -#: common/models.py:2228 +#: common/models.py:2255 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2233 +#: common/models.py:2260 msgid "Search Companies" msgstr "" -#: common/models.py:2234 +#: common/models.py:2261 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2239 +#: common/models.py:2266 msgid "Search Build Orders" msgstr "" -#: common/models.py:2240 +#: common/models.py:2267 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2245 +#: common/models.py:2272 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2246 +#: common/models.py:2273 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2251 +#: common/models.py:2278 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2253 +#: common/models.py:2280 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2259 +#: common/models.py:2286 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2260 +#: common/models.py:2287 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2265 +#: common/models.py:2292 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2267 +#: common/models.py:2294 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2273 +#: common/models.py:2300 msgid "Search Return Orders" msgstr "" -#: common/models.py:2274 +#: common/models.py:2301 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2279 +#: common/models.py:2306 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2281 +#: common/models.py:2308 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2287 +#: common/models.py:2314 msgid "Search Preview Results" msgstr "" -#: common/models.py:2289 +#: common/models.py:2316 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2295 +#: common/models.py:2322 msgid "Regex Search" msgstr "" -#: common/models.py:2296 +#: common/models.py:2323 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2301 +#: common/models.py:2328 msgid "Whole Word Search" msgstr "" -#: common/models.py:2302 +#: common/models.py:2329 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2307 +#: common/models.py:2334 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2308 +#: common/models.py:2335 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2313 +#: common/models.py:2340 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2314 +#: common/models.py:2341 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2319 +#: common/models.py:2346 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2320 +#: common/models.py:2347 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2325 +#: common/models.py:2352 msgid "Date Format" msgstr "" -#: common/models.py:2326 +#: common/models.py:2353 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2366 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2340 +#: common/models.py:2367 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2372 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2347 +#: common/models.py:2374 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2353 +#: common/models.py:2380 msgid "Table String Length" msgstr "" -#: common/models.py:2355 +#: common/models.py:2382 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2361 +#: common/models.py:2388 msgid "Default part label template" msgstr "" -#: common/models.py:2362 +#: common/models.py:2389 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2367 +#: common/models.py:2394 msgid "Default stock item template" msgstr "" -#: common/models.py:2369 +#: common/models.py:2396 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2375 +#: common/models.py:2402 msgid "Default stock location label template" msgstr "" -#: common/models.py:2377 +#: common/models.py:2404 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2383 +#: common/models.py:2410 msgid "Receive error reports" msgstr "" -#: common/models.py:2384 +#: common/models.py:2411 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2389 +#: common/models.py:2416 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2417 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2460 msgid "Price break quantity" msgstr "" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3503,23 +3536,23 @@ msgstr "" msgid "Price" msgstr "" -#: common/models.py:2441 +#: common/models.py:2468 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2639 common/models.py:2824 msgid "Endpoint" msgstr "" -#: common/models.py:2613 +#: common/models.py:2640 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2623 +#: common/models.py:2650 msgid "Name for this webhook" msgstr "" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3529,101 +3562,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2627 +#: common/models.py:2654 msgid "Is this webhook active" msgstr "" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2670 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2644 +#: common/models.py:2671 msgid "Token for access" msgstr "" -#: common/models.py:2652 +#: common/models.py:2679 msgid "Secret" msgstr "" -#: common/models.py:2653 +#: common/models.py:2680 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2761 +#: common/models.py:2788 msgid "Message ID" msgstr "メッセージ ID:" -#: common/models.py:2762 +#: common/models.py:2789 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2770 +#: common/models.py:2797 msgid "Host" msgstr "" -#: common/models.py:2771 +#: common/models.py:2798 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2779 +#: common/models.py:2806 msgid "Header" msgstr "" -#: common/models.py:2780 +#: common/models.py:2807 msgid "Header of this message" msgstr "" -#: common/models.py:2787 +#: common/models.py:2814 msgid "Body" msgstr "" -#: common/models.py:2788 +#: common/models.py:2815 msgid "Body of this message" msgstr "" -#: common/models.py:2798 +#: common/models.py:2825 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2803 +#: common/models.py:2830 msgid "Worked on" msgstr "" -#: common/models.py:2804 +#: common/models.py:2831 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2930 +#: common/models.py:2957 msgid "Id" msgstr "" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2959 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2963 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2965 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2967 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Read" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Was this news item read?" msgstr "" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2987 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3633,31 +3666,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2960 +#: common/models.py:2987 msgid "Image file" msgstr "" -#: common/models.py:3002 +#: common/models.py:3029 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3021 +#: common/models.py:3048 msgid "Unit name" msgstr "" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3029 +#: common/models.py:3056 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3037 +#: common/models.py:3064 msgid "Unit definition" msgstr "" @@ -3961,7 +3994,7 @@ msgid "Link to address information (external)" msgstr "" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" @@ -3972,7 +4005,7 @@ msgstr "" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3987,7 +4020,7 @@ msgid "Select manufacturer" msgstr "" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4022,9 +4055,9 @@ msgstr "" #: company/models.py:615 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2438 templates/js/translated/company.js:1156 +#: stock/models.py:2441 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1519 msgid "Value" msgstr "" @@ -4033,7 +4066,7 @@ msgid "Parameter value" msgstr "" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4059,7 +4092,7 @@ msgstr "" #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4076,7 +4109,7 @@ msgstr "仕入先" msgid "Select supplier" msgstr "" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "" @@ -4093,13 +4126,13 @@ msgid "Supplier part description" msgstr "" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:579 msgid "Note" msgstr "" @@ -4112,10 +4145,10 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 -#: templates/js/translated/stock.js:2387 +#: templates/js/translated/stock.js:2423 msgid "Packaging" msgstr "" @@ -4157,7 +4190,7 @@ msgstr "" msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "" @@ -4218,13 +4251,13 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1100 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 #: templates/js/translated/return_order.js:296 #: templates/js/translated/sales_order.js:784 -#: templates/js/translated/stock.js:2923 +#: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:804 msgid "Customer" msgstr "顧客" @@ -4429,8 +4462,9 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "仕入先" @@ -4482,7 +4516,7 @@ msgstr "" #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2243 +#: templates/js/translated/stock.js:2279 msgid "Supplier Part" msgstr "" @@ -4528,7 +4562,7 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4577,15 +4611,17 @@ msgstr "" msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 -#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:193 msgid "Stock Items" msgstr "在庫商品" @@ -4639,8 +4675,8 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" @@ -4665,7 +4701,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "" @@ -4679,8 +4715,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "" @@ -4821,7 +4857,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1674 -#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "" @@ -4830,7 +4866,7 @@ msgstr "" #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 -#: templates/js/translated/stock.js:2905 +#: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "" @@ -4838,11 +4874,11 @@ msgstr "" msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -5029,9 +5065,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2274 +#: templates/js/translated/stock.js:2310 msgid "Purchase Price" msgstr "購入金額" @@ -5084,8 +5120,8 @@ msgstr "" msgid "User who checked this shipment" msgstr "" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "" @@ -5133,7 +5169,7 @@ msgstr "" msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "" @@ -5207,159 +5243,159 @@ msgstr "" msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:610 +#: order/serializers.py:632 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "割り当てるシリアル番号を入力" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1677 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "" @@ -5733,7 +5769,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" @@ -5763,12 +5799,12 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5780,12 +5816,12 @@ msgstr "" #: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 -#: templates/js/translated/stock.js:1999 +#: templates/js/translated/stock.js:2035 msgid "IPN" msgstr "" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" @@ -5861,10 +5897,10 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -5885,17 +5921,17 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3897 msgid "Part IPN" msgstr "" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5973,8 +6009,8 @@ msgstr "" msgid "This option must be selected" msgstr "" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5982,12 +6018,17 @@ msgstr "" msgid "Category" msgstr "カテゴリ" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5995,7 +6036,7 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "パーツカテゴリ" @@ -6010,7 +6051,8 @@ msgstr "パーツカテゴリ" msgid "Default location for parts in this category" msgstr "" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 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" @@ -6076,7 +6118,7 @@ msgstr "" msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3896 msgid "Part name" msgstr "" @@ -6358,7 +6400,7 @@ msgstr "" #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1732 -#: templates/js/translated/stock.js:2785 +#: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" @@ -6410,586 +6452,602 @@ msgstr "" msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3448 -msgid "Test with this name already exists for this part" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "" -#: part/models.py:3496 +#: part/models.py:3505 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "" -#: part/models.py:3503 +#: part/models.py:3512 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3847 +#: part/models.py:3856 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3885 +#: part/models.py:3894 msgid "Part ID or part name" msgstr "" -#: part/models.py:3886 +#: part/models.py:3895 msgid "Unique part ID value" msgstr "" -#: part/models.py:3888 +#: part/models.py:3897 msgid "Part IPN value" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "Level" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "BOM level" msgstr "" -#: part/models.py:3979 +#: part/models.py:3988 msgid "Select parent part" msgstr "" -#: part/models.py:3989 +#: part/models.py:3998 msgid "Sub part" msgstr "" -#: part/models.py:3990 +#: part/models.py:3999 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4001 +#: part/models.py:4010 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4007 +#: part/models.py:4016 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4013 +#: part/models.py:4022 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4029 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4021 +#: part/models.py:4030 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4028 +#: part/models.py:4037 msgid "BOM item reference" msgstr "" -#: part/models.py:4036 +#: part/models.py:4045 msgid "BOM item notes" msgstr "" -#: part/models.py:4042 +#: part/models.py:4051 msgid "Checksum" msgstr "" -#: part/models.py:4043 +#: part/models.py:4052 msgid "BOM line checksum" msgstr "" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4057 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4049 +#: part/models.py:4058 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4063 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:4055 +#: part/models.py:4064 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4069 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4061 +#: part/models.py:4070 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4146 stock/models.py:649 +#: part/models.py:4155 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4165 part/models.py:4167 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4298 +#: part/models.py:4307 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4319 +#: part/models.py:4328 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4332 +#: part/models.py:4341 msgid "Parent BOM item" msgstr "" -#: part/models.py:4340 +#: part/models.py:4349 msgid "Substitute part" msgstr "" -#: part/models.py:4356 +#: part/models.py:4365 msgid "Part 1" msgstr "" -#: part/models.py:4364 +#: part/models.py:4373 msgid "Part 2" msgstr "" -#: part/models.py:4365 +#: part/models.py:4374 msgid "Select Related Part" msgstr "" -#: part/models.py:4384 +#: part/models.py:4393 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4389 +#: part/models.py:4398 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "カテゴリを選択" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:432 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:480 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1104 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1078 +#: part/serializers.py:1114 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1088 +#: part/serializers.py:1124 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1647 +#: part/serializers.py:1693 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1659 +#: part/serializers.py:1705 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1694 +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "" @@ -7147,7 +7205,7 @@ msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/stock.js:2179 users/models.py:191 +#: templates/js/translated/stock.js:2215 users/models.py:191 msgid "Stocktake" msgstr "" @@ -7221,7 +7279,7 @@ msgid "Validate BOM" msgstr "" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "" @@ -7405,7 +7463,7 @@ msgstr "" msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "" @@ -7509,7 +7567,7 @@ msgstr "" #: templates/InvenTree/settings/sidebar.html:51 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 -#: templates/js/translated/stock.js:2033 templates/navbar.html:31 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 msgid "Stock" msgstr "在庫" @@ -7555,7 +7613,7 @@ msgstr "" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 -#: templates/js/translated/stock.js:2209 +#: templates/js/translated/stock.js:2245 msgid "Last Updated" msgstr "" @@ -7999,7 +8057,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "" @@ -8307,16 +8365,16 @@ msgstr "" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "" @@ -8336,103 +8394,111 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" msgstr "" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" msgstr "" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8499,12 +8565,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1492 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Result" msgstr "" @@ -8531,7 +8597,7 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:168 #: stock/admin.py:162 templates/js/translated/stock.js:700 -#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110 msgid "Serial" msgstr "" @@ -8615,7 +8681,7 @@ msgstr "" #: stock/admin.py:256 stock/models.py:886 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2193 users/models.py:113 +#: templates/js/translated/stock.js:2229 users/models.py:113 msgid "Expiry Date" msgstr "" @@ -8713,7 +8779,7 @@ msgstr "" msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:174 templates/js/translated/stock.js:2745 +#: stock/models.py:174 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" @@ -8722,7 +8788,7 @@ msgstr "" msgid "This is an external stock location" msgstr "" -#: stock/models.py:181 templates/js/translated/stock.js:2754 +#: stock/models.py:181 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" @@ -8739,7 +8805,7 @@ msgstr "" msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:290 msgid "Stock item cannot be created for virtual parts" msgstr "" @@ -8784,7 +8850,7 @@ msgstr "" msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1351 msgid "Packaging this stock item is stored in" msgstr "" @@ -8796,7 +8862,7 @@ msgstr "" msgid "Serial number for this item" msgstr "" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1334 msgid "Batch code for this stock item" msgstr "" @@ -8873,7 +8939,7 @@ msgstr "" msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:529 msgid "Serial numbers already exist" msgstr "シリアル番号が既に存在します" @@ -8905,7 +8971,7 @@ msgstr "" msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1240 msgid "Duplicate stock items" msgstr "" @@ -8929,207 +8995,236 @@ msgstr "" msgid "Entry notes" msgstr "" -#: stock/models.py:2399 +#: stock/models.py:2402 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2405 +#: stock/models.py:2408 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Test result" msgstr "" -#: stock/models.py:2439 +#: stock/models.py:2442 msgid "Test output value" msgstr "" -#: stock/models.py:2447 +#: stock/models.py:2450 msgid "Test result attachment" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2454 msgid "Test notes" msgstr "" -#: stock/serializers.py:96 +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "" + +#: stock/models.py:2463 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2469 +msgid "Started" +msgstr "" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:100 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:119 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 +#: stock/serializers.py:151 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:184 msgid "Serial number is too large" msgstr "シリアル番号が大きすぎます" -#: stock/serializers.py:267 +#: stock/serializers.py:282 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:380 +#: stock/serializers.py:402 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:442 +#: stock/serializers.py:464 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:455 +#: stock/serializers.py:477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:462 +#: stock/serializers.py:484 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:480 +#: stock/serializers.py:502 msgid "Optional note field" msgstr "" -#: stock/serializers.py:490 +#: stock/serializers.py:512 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:545 +#: stock/serializers.py:567 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:574 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:553 +#: stock/serializers.py:575 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:566 +#: stock/serializers.py:588 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:596 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:581 +#: stock/serializers.py:607 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:620 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:628 +#: stock/serializers.py:655 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:663 +#: stock/serializers.py:690 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:676 +#: stock/serializers.py:703 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:693 +#: stock/serializers.py:720 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:724 +#: stock/serializers.py:751 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:761 +#: stock/serializers.py:788 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:767 +#: stock/serializers.py:794 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1036 +#: stock/serializers.py:1069 msgid "Part must be salable" msgstr "パーツは販売可能でなければなりません" -#: stock/serializers.py:1040 +#: stock/serializers.py:1073 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1044 +#: stock/serializers.py:1077 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1068 +#: stock/serializers.py:1101 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1074 +#: stock/serializers.py:1107 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1082 +#: stock/serializers.py:1115 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1125 stock/serializers.py:1379 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1171 +#: stock/serializers.py:1204 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1176 +#: stock/serializers.py:1209 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1177 +#: stock/serializers.py:1210 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1182 +#: stock/serializers.py:1215 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1183 +#: stock/serializers.py:1216 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1193 +#: stock/serializers.py:1226 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1260 +#: stock/serializers.py:1293 msgid "No Change" msgstr "" -#: stock/serializers.py:1289 +#: stock/serializers.py:1322 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1308 +#: stock/serializers.py:1341 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1336 +#: stock/serializers.py:1369 msgid "Stock transaction notes" msgstr "" @@ -9154,7 +9249,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 msgid "Delete Test Data" msgstr "" @@ -9170,15 +9265,15 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:274 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 msgid "Add Test Result" msgstr "" @@ -9201,17 +9296,17 @@ msgid "Stock adjustment actions" msgstr "" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 msgid "Count stock" msgstr "" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:1803 msgid "Add stock" msgstr "" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1776 +#: templates/js/translated/stock.js:1812 msgid "Remove stock" msgstr "" @@ -9220,12 +9315,12 @@ msgid "Serialize stock" msgstr "" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 msgid "Transfer stock" msgstr "" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1884 msgid "Assign to customer" msgstr "" @@ -9364,7 +9459,7 @@ msgid "No stocktake performed" msgstr "" #: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1915 +#: templates/js/translated/stock.js:1951 msgid "stock item" msgstr "" @@ -9469,7 +9564,7 @@ msgid "New Location" msgstr "" #: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2536 +#: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" @@ -10063,7 +10158,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:37 msgid "New Location Type" msgstr "" @@ -10120,7 +10215,7 @@ msgstr "" msgid "Stock Settings" msgstr "" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:33 msgid "Stock Location Types" msgstr "" @@ -10662,7 +10757,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "" @@ -10676,7 +10771,7 @@ msgid "Click on the following link to view this part" msgstr "このパーツを表示するには、次のリンクをクリックしてください" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "最小在庫" @@ -11051,62 +11146,66 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "" @@ -11389,7 +11488,7 @@ msgstr "" #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 -#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11401,7 +11500,7 @@ msgstr "" msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006 +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" @@ -11449,29 +11548,29 @@ msgstr "" msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "" @@ -11804,15 +11903,15 @@ msgstr "" msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3087 +#: templates/js/translated/forms.js:3103 msgid "Select Columns" msgstr "" @@ -12289,7 +12388,7 @@ msgid "No category" msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 -#: templates/js/translated/stock.js:2633 +#: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" @@ -12301,7 +12400,7 @@ msgstr "" msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" @@ -12313,64 +12412,64 @@ msgstr "" msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" @@ -12907,7 +13006,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1737 +#: templates/js/translated/stock.js:1773 msgid "Shipped to customer" msgstr "" @@ -13165,7 +13264,7 @@ msgstr "" msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" @@ -13189,248 +13288,256 @@ msgstr "" msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1440 +#: templates/js/translated/stock.js:1447 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1443 +#: templates/js/translated/stock.js:1450 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1466 +#: templates/js/translated/stock.js:1473 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1530 +#: templates/js/translated/stock.js:1537 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1677 +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1733 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1729 +#: templates/js/translated/stock.js:1765 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1769 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1741 +#: templates/js/translated/stock.js:1777 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1747 +#: templates/js/translated/stock.js:1783 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1839 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1848 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:1897 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1916 +#: templates/js/translated/stock.js:1952 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1921 +#: templates/js/translated/stock.js:1957 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1932 +#: templates/js/translated/stock.js:1968 msgid "Stock Actions" msgstr "" -#: templates/js/translated/stock.js:1976 +#: templates/js/translated/stock.js:2012 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2054 +#: templates/js/translated/stock.js:2090 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2059 +#: templates/js/translated/stock.js:2095 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2062 +#: templates/js/translated/stock.js:2098 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2065 +#: templates/js/translated/stock.js:2101 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2067 +#: templates/js/translated/stock.js:2103 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2069 +#: templates/js/translated/stock.js:2105 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2072 +#: templates/js/translated/stock.js:2108 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2074 +#: templates/js/translated/stock.js:2110 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2114 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2080 +#: templates/js/translated/stock.js:2116 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2085 +#: templates/js/translated/stock.js:2121 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2087 +#: templates/js/translated/stock.js:2123 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2089 +#: templates/js/translated/stock.js:2125 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2129 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2258 +#: templates/js/translated/stock.js:2294 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2305 +#: templates/js/translated/stock.js:2341 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2433 +#: templates/js/translated/stock.js:2469 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2573 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2692 +#: templates/js/translated/stock.js:2728 msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2810 +#: templates/js/translated/stock.js:2846 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2814 +#: templates/js/translated/stock.js:2850 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:2862 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2848 +#: templates/js/translated/stock.js:2884 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2865 +#: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2880 +#: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2897 +#: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2914 +#: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3005 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2977 +#: templates/js/translated/stock.js:3013 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:3049 +#: templates/js/translated/stock.js:3085 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139 +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:3161 +#: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:3182 +#: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:3183 +#: 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:3185 +#: 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:3186 +#: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:3187 +#: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:3188 +#: 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:3201 +#: templates/js/translated/stock.js:3237 msgid "Select part to install" msgstr "" -#: templates/js/translated/stock.js:3264 +#: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" msgstr "" -#: templates/js/translated/stock.js:3277 +#: templates/js/translated/stock.js:3313 msgid "Selected stock items" msgstr "" -#: templates/js/translated/stock.js:3281 +#: templates/js/translated/stock.js:3317 msgid "Change Stock Status" msgstr "" diff --git a/InvenTree/locale/ko/LC_MESSAGES/django.po b/InvenTree/locale/ko/LC_MESSAGES/django.po index 53bbb6d8b4..7d9d31a46a 100644 --- a/InvenTree/locale/ko/LC_MESSAGES/django.po +++ b/InvenTree/locale/ko/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 04:05+0000\n" -"PO-Revision-Date: 2024-02-28 07:23\n" +"POT-Creation-Date: 2024-03-19 01:26+0000\n" +"PO-Revision-Date: 2024-03-19 11:51\n" "Last-Translator: \n" "Language-Team: Korean\n" "Language: ko_KR\n" @@ -30,20 +30,20 @@ msgstr "이 모델을 볼 수 있는 권한이 없습니다." msgid "Invalid unit provided ({unit})" msgstr "" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "{original} 을 {unit} 으로 전환할 수 없음." -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" msgstr "" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" msgstr "" @@ -64,18 +64,18 @@ msgstr "날짜 입력" #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 #: templates/js/translated/return_order.js:776 #: templates/js/translated/sales_order.js:1067 #: templates/js/translated/sales_order.js:1982 -#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 msgid "Notes" msgstr "메모" @@ -132,42 +132,42 @@ msgstr "" msgid "Registration is disabled." msgstr "" -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "" @@ -203,131 +203,135 @@ msgstr "" msgid "Supplied URL is not a valid image file" msgstr "" -#: InvenTree/locales.py:16 +#: InvenTree/locales.py:18 msgid "Bulgarian" msgstr "" -#: InvenTree/locales.py:17 +#: InvenTree/locales.py:19 msgid "Czech" msgstr "체코어" -#: InvenTree/locales.py:18 +#: InvenTree/locales.py:20 msgid "Danish" msgstr "덴마크어" -#: InvenTree/locales.py:19 +#: InvenTree/locales.py:21 msgid "German" msgstr "독일어" -#: InvenTree/locales.py:20 +#: InvenTree/locales.py:22 msgid "Greek" msgstr "그리스어" -#: InvenTree/locales.py:21 +#: InvenTree/locales.py:23 msgid "English" msgstr "영어" -#: InvenTree/locales.py:22 +#: InvenTree/locales.py:24 msgid "Spanish" msgstr "스페인어" -#: InvenTree/locales.py:23 +#: InvenTree/locales.py:25 msgid "Spanish (Mexican)" msgstr "스페인어 (멕시코)" -#: InvenTree/locales.py:24 +#: InvenTree/locales.py:26 msgid "Farsi / Persian" msgstr "파르시어/페르시아어" -#: InvenTree/locales.py:25 +#: InvenTree/locales.py:27 msgid "Finnish" msgstr "핀란드어" -#: InvenTree/locales.py:26 +#: InvenTree/locales.py:28 msgid "French" msgstr "프랑스어" -#: InvenTree/locales.py:27 +#: InvenTree/locales.py:29 msgid "Hebrew" msgstr "히브리어" -#: InvenTree/locales.py:28 +#: InvenTree/locales.py:30 msgid "Hindi" msgstr "힌디어" -#: InvenTree/locales.py:29 +#: InvenTree/locales.py:31 msgid "Hungarian" msgstr "헝가리어" -#: InvenTree/locales.py:30 +#: InvenTree/locales.py:32 msgid "Italian" msgstr "이탈리아어" -#: InvenTree/locales.py:31 +#: InvenTree/locales.py:33 msgid "Japanese" msgstr "일본어" -#: InvenTree/locales.py:32 +#: InvenTree/locales.py:34 msgid "Korean" msgstr "한국어" -#: InvenTree/locales.py:33 +#: InvenTree/locales.py:35 +msgid "Latvian" +msgstr "" + +#: InvenTree/locales.py:36 msgid "Dutch" msgstr "네덜란드어" -#: InvenTree/locales.py:34 +#: InvenTree/locales.py:37 msgid "Norwegian" msgstr "노르웨이어" -#: InvenTree/locales.py:35 +#: InvenTree/locales.py:38 msgid "Polish" msgstr "폴란드어" -#: InvenTree/locales.py:36 +#: InvenTree/locales.py:39 msgid "Portuguese" msgstr "포르투갈어" -#: InvenTree/locales.py:37 +#: InvenTree/locales.py:40 msgid "Portuguese (Brazilian)" msgstr "포르투갈어 (브라질)" -#: InvenTree/locales.py:38 +#: InvenTree/locales.py:41 msgid "Russian" msgstr "러시아어" -#: InvenTree/locales.py:39 +#: InvenTree/locales.py:42 msgid "Slovak" msgstr "" -#: InvenTree/locales.py:40 +#: InvenTree/locales.py:43 msgid "Slovenian" msgstr "슬로베니아어" -#: InvenTree/locales.py:41 +#: InvenTree/locales.py:44 msgid "Serbian" msgstr "" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:45 msgid "Swedish" msgstr "스웨덴어" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:46 msgid "Thai" msgstr "태국어" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:47 msgid "Turkish" msgstr "터키어" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:48 msgid "Vietnamese" msgstr "베트남어" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:49 msgid "Chinese (Simplified)" msgstr "중국어 (간체)" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:50 msgid "Chinese (Traditional)" msgstr "중국어 (번체)" @@ -391,7 +395,7 @@ msgstr "존재하지 않는 파일" msgid "Missing external link" msgstr "존재하지 않는 외부 링크" -#: InvenTree/models.py:559 stock/models.py:2446 +#: InvenTree/models.py:559 stock/models.py:2449 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -401,7 +405,7 @@ msgstr "첨부파일" msgid "Select file to attach" msgstr "첨부할 파일을 선택하세요" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -432,13 +436,13 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:3000 users/models.py:100 +#: templates/js/translated/stock.js:3036 users/models.py:100 msgid "User" msgstr "사용자" @@ -479,10 +483,10 @@ msgstr "" msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -495,7 +499,7 @@ msgstr "" #: templates/js/translated/company.js:1155 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "이름" @@ -506,10 +510,10 @@ msgstr "이름" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -523,7 +527,7 @@ msgstr "이름" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -531,8 +535,8 @@ msgstr "이름" #: templates/js/translated/return_order.js:314 #: templates/js/translated/sales_order.js:802 #: templates/js/translated/sales_order.js:1812 -#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021 -#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "설명" @@ -545,7 +549,7 @@ msgid "parent" msgstr "" #: InvenTree/models.py:916 templates/js/translated/part.js:2794 -#: templates/js/translated/stock.js:2721 +#: templates/js/translated/stock.js:2757 msgid "Path" msgstr "" @@ -581,7 +585,7 @@ msgstr "" msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:62 part/models.py:4134 +#: InvenTree/serializers.py:62 part/models.py:4143 msgid "Must be a valid number" msgstr "유효한 숫자여야 합니다" @@ -596,89 +600,89 @@ msgstr "" msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:436 +#: InvenTree/serializers.py:441 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:448 +#: InvenTree/serializers.py:453 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:467 +#: InvenTree/serializers.py:472 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:469 +#: InvenTree/serializers.py:474 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:476 +#: InvenTree/serializers.py:481 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:537 +#: InvenTree/serializers.py:542 msgid "Filename" msgstr "파일명" -#: InvenTree/serializers.py:571 +#: InvenTree/serializers.py:576 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:591 +#: InvenTree/serializers.py:596 msgid "Data File" msgstr "" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:597 msgid "Select data file for upload" msgstr "" -#: InvenTree/serializers.py:609 +#: InvenTree/serializers.py:614 msgid "Unsupported file type" msgstr "지원하지 않는 파일 형식" -#: InvenTree/serializers.py:615 +#: InvenTree/serializers.py:620 msgid "File is too large" msgstr "파일이 너무 큽니다" -#: InvenTree/serializers.py:636 +#: InvenTree/serializers.py:641 msgid "No columns found in file" msgstr "파일에서 발견된 세로열 없음." -#: InvenTree/serializers.py:639 +#: InvenTree/serializers.py:644 msgid "No data rows found in file" msgstr "파일에서 발견된 가로열 없음" -#: InvenTree/serializers.py:752 +#: InvenTree/serializers.py:757 msgid "No data rows provided" msgstr "데이터 가로열이 제공되지 않음" -#: InvenTree/serializers.py:755 +#: InvenTree/serializers.py:760 msgid "No data columns supplied" msgstr "데이터 세로열이 제공되지 않음" -#: InvenTree/serializers.py:822 +#: InvenTree/serializers.py:827 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "사라진 필수 세로열: {name}" -#: InvenTree/serializers.py:831 +#: InvenTree/serializers.py:836 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:859 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:855 +#: InvenTree/serializers.py:860 msgid "URL of remote image file" msgstr "원격 이미지 파일의 URL" -#: InvenTree/serializers.py:873 +#: InvenTree/serializers.py:878 msgid "Downloading images from remote URL is not enabled" msgstr "원격 URL 에서 이미지 다운로드가 활성화되지 않음" -#: InvenTree/status.py:66 part/serializers.py:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "Background worker 확인 실패" @@ -818,7 +822,7 @@ msgstr "" msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 msgid "Merged stock items" msgstr "" @@ -838,7 +842,7 @@ msgstr "" msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 msgid "Consumed by build order" msgstr "" @@ -938,14 +942,14 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -960,7 +964,7 @@ msgid "Tracked" msgstr "" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -985,7 +989,7 @@ msgstr "" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "" @@ -1014,7 +1018,7 @@ msgstr "" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1044,11 +1048,11 @@ msgstr "" #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1059,7 +1063,7 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:267 stock/serializers.py:689 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1086,9 +1090,9 @@ msgstr "" #: templates/js/translated/sales_order.js:1598 #: templates/js/translated/sales_order.js:1796 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960 -#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054 -#: templates/js/translated/stock.js:3200 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 msgid "Part" msgstr "" @@ -1146,8 +1150,8 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" @@ -1242,53 +1246,53 @@ msgstr "" msgid "Project code for this build order" msgstr "" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "" -#: build/models.py:789 +#: build/models.py:805 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 msgid "Quantity must be greater than zero" msgstr "수량 값은 0보다 커야 합니다" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" msgstr "" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1298,7 +1302,7 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:463 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1310,7 +1314,7 @@ msgstr "" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1325,43 +1329,43 @@ msgstr "" #: templates/js/translated/sales_order.js:1698 #: templates/js/translated/sales_order.js:1824 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 -#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985 -#: templates/js/translated/stock.js:3068 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "수량" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1381 +#: build/models.py:1397 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1390 +#: build/models.py:1406 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1473 +#: build/models.py:1489 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 @@ -1372,23 +1376,23 @@ msgstr "" #: templates/js/translated/sales_order.js:1605 #: templates/js/translated/sales_order.js:1692 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 -#: templates/js/translated/stock.js:2941 +#: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "" @@ -1425,8 +1429,8 @@ msgstr "" msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "일련번호" @@ -1451,10 +1455,10 @@ msgstr "" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1466,8 +1470,8 @@ msgstr "" #: templates/js/translated/sales_order.js:1627 #: templates/js/translated/sales_order.js:1706 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164 -#: templates/js/translated/stock.js:2835 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 msgid "Location" msgstr "위치" @@ -1493,16 +1497,16 @@ msgstr "" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 #: templates/js/translated/purchase_order.js:1723 #: templates/js/translated/return_order.js:331 #: templates/js/translated/sales_order.js:819 -#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959 -#: templates/js/translated/stock.js:3084 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 msgid "Status" msgstr "상태" @@ -1566,7 +1570,7 @@ msgstr "" msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "" @@ -1602,11 +1606,11 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1065 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" @@ -1619,7 +1623,7 @@ msgstr "" msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "" @@ -1659,44 +1663,45 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 #: stock/api.py:745 msgid "BOM Item" msgstr "" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1862,7 +1867,7 @@ msgstr "" #: templates/js/translated/pricing.js:929 #: templates/js/translated/sales_order.js:769 #: templates/js/translated/sales_order.js:992 -#: templates/js/translated/stock.js:2888 +#: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "" @@ -1920,8 +1925,8 @@ msgstr "" #: templates/js/translated/build.js:1377 #: templates/js/translated/model_renderers.js:235 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153 -#: templates/js/translated/stock.js:3091 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" @@ -1990,27 +1995,31 @@ msgstr "" msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:210 -msgid "Incomplete Build Outputs" -msgstr "" - -#: build/templates/build/detail.html:214 -msgid "Create new build output" +#: 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:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2026,15 +2035,15 @@ msgstr "" msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" msgstr "" @@ -2112,1390 +2121,1414 @@ msgstr "" msgid "User or group responsible for this project" msgstr "" -#: common/models.py:737 +#: common/models.py:744 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:741 +#: common/models.py:748 msgid "Settings value" msgstr "" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "재시작 필요" -#: common/models.py:1231 +#: common/models.py:1238 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "회사명" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "기본 통화" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1283 +#: common/models.py:1290 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "URL에서 다운로드" -#: common/models.py:1298 +#: common/models.py:1305 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "" -#: common/models.py:1305 +#: common/models.py:1312 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "" -#: common/models.py:1332 +#: common/models.py:1339 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "" -#: common/models.py:1339 +#: common/models.py:1346 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "" -#: common/models.py:1346 +#: common/models.py:1353 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1352 +#: common/models.py:1359 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1360 +#: common/models.py:1367 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1369 +#: common/models.py:1376 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1378 +#: common/models.py:1385 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "바코드 지원" -#: common/models.py:1386 +#: common/models.py:1393 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1399 +#: common/models.py:1406 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "" -#: common/models.py:1411 +#: common/models.py:1418 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1415 +#: common/models.py:1422 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1421 +#: common/models.py:1428 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1427 +#: common/models.py:1434 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1433 +#: common/models.py:1440 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1439 +#: common/models.py:1446 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "구입 가능" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "판매 가능" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1505 +#: common/models.py:1512 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1512 +#: common/models.py:1519 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "" -#: common/models.py:1525 +#: common/models.py:1532 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1526 +#: common/models.py:1533 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1530 +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1532 +#: common/models.py:1539 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1540 +#: common/models.py:1547 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1548 +#: common/models.py:1555 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1564 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1580 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1588 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1595 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1603 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1611 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1618 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1632 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "디버그 모드" -#: common/models.py:1645 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: 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:202 msgid "Page Size" msgstr "페이지 크기" -#: common/models.py:1651 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "PDF 보고서 기본 페이지 크기" -#: common/models.py:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1657 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1664 +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1671 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1677 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1692 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1704 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1711 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1719 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1725 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1731 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1736 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1741 +#: 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 "Build Order Reference Pattern" msgstr "" -#: common/models.py:1743 +#: common/models.py:1764 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1757 +#: common/models.py:1778 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1765 +#: common/models.py:1786 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1773 +#: common/models.py:1794 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1780 +#: common/models.py:1801 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1787 +#: common/models.py:1808 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1795 +#: common/models.py:1816 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1803 +#: common/models.py:1824 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1811 +#: common/models.py:1832 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "" -#: common/models.py:1825 +#: common/models.py:1846 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "SSO 활성화" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "로그인 페이지에서 SSO 활성화" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1838 +#: common/models.py:1859 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1844 +#: common/models.py:1865 msgid "Email required" msgstr "이메일 필요" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1852 +#: common/models.py:1873 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "두 번 보내기" -#: common/models.py:1859 +#: common/models.py:1880 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "" -#: common/models.py:1865 +#: common/models.py:1886 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "" -#: common/models.py:1879 +#: common/models.py:1900 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1892 +#: common/models.py:1913 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1929 +#: common/models.py:1950 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "" -#: common/models.py:1936 +#: common/models.py:1957 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1950 +#: common/models.py:1971 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1958 +#: common/models.py:1979 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1966 +#: common/models.py:1987 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1974 +#: common/models.py:1995 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2029 common/models.py:2429 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2043 +#: common/models.py:2070 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2045 +#: common/models.py:2072 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2051 +#: common/models.py:2078 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2052 +#: common/models.py:2079 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2057 +#: common/models.py:2084 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2058 +#: common/models.py:2085 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2063 +#: common/models.py:2090 msgid "Show latest parts" msgstr "" -#: common/models.py:2064 +#: common/models.py:2091 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2069 +#: common/models.py:2096 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2070 +#: common/models.py:2097 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2075 +#: common/models.py:2102 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2076 +#: common/models.py:2103 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2081 +#: common/models.py:2108 msgid "Show low stock" msgstr "" -#: common/models.py:2082 +#: common/models.py:2109 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2087 +#: common/models.py:2114 msgid "Show depleted stock" msgstr "" -#: common/models.py:2088 +#: common/models.py:2115 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2093 +#: common/models.py:2120 msgid "Show needed stock" msgstr "" -#: common/models.py:2094 +#: common/models.py:2121 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2099 +#: common/models.py:2126 msgid "Show expired stock" msgstr "" -#: common/models.py:2100 +#: common/models.py:2127 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2105 +#: common/models.py:2132 msgid "Show stale stock" msgstr "" -#: common/models.py:2106 +#: common/models.py:2133 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2111 +#: common/models.py:2138 msgid "Show pending builds" msgstr "" -#: common/models.py:2112 +#: common/models.py:2139 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2117 +#: common/models.py:2144 msgid "Show overdue builds" msgstr "" -#: common/models.py:2118 +#: common/models.py:2145 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2123 +#: common/models.py:2150 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2124 +#: common/models.py:2151 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2129 +#: common/models.py:2156 msgid "Show overdue POs" msgstr "" -#: common/models.py:2130 +#: common/models.py:2157 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2135 +#: common/models.py:2162 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2136 +#: common/models.py:2163 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2141 +#: common/models.py:2168 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2142 +#: common/models.py:2169 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2147 +#: common/models.py:2174 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2148 +#: common/models.py:2175 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2153 +#: common/models.py:2180 msgid "Show News" msgstr "" -#: common/models.py:2154 +#: common/models.py:2181 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2159 +#: common/models.py:2186 msgid "Inline label display" msgstr "" -#: common/models.py:2161 +#: common/models.py:2188 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2167 +#: common/models.py:2194 msgid "Default label printer" msgstr "" -#: common/models.py:2169 +#: common/models.py:2196 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2175 +#: common/models.py:2202 msgid "Inline report display" msgstr "" -#: common/models.py:2177 +#: common/models.py:2204 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2183 +#: common/models.py:2210 msgid "Search Parts" msgstr "" -#: common/models.py:2184 +#: common/models.py:2211 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2189 +#: common/models.py:2216 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2190 +#: common/models.py:2217 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2195 +#: common/models.py:2222 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2196 +#: common/models.py:2223 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2201 +#: common/models.py:2228 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2202 +#: common/models.py:2229 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2207 +#: common/models.py:2234 msgid "Search Categories" msgstr "" -#: common/models.py:2208 +#: common/models.py:2235 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2213 +#: common/models.py:2240 msgid "Search Stock" msgstr "" -#: common/models.py:2214 +#: common/models.py:2241 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2219 +#: common/models.py:2246 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2221 +#: common/models.py:2248 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2227 +#: common/models.py:2254 msgid "Search Locations" msgstr "" -#: common/models.py:2228 +#: common/models.py:2255 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2233 +#: common/models.py:2260 msgid "Search Companies" msgstr "" -#: common/models.py:2234 +#: common/models.py:2261 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2239 +#: common/models.py:2266 msgid "Search Build Orders" msgstr "" -#: common/models.py:2240 +#: common/models.py:2267 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2245 +#: common/models.py:2272 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2246 +#: common/models.py:2273 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2251 +#: common/models.py:2278 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2253 +#: common/models.py:2280 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2259 +#: common/models.py:2286 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2260 +#: common/models.py:2287 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2265 +#: common/models.py:2292 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2267 +#: common/models.py:2294 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2273 +#: common/models.py:2300 msgid "Search Return Orders" msgstr "" -#: common/models.py:2274 +#: common/models.py:2301 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2279 +#: common/models.py:2306 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2281 +#: common/models.py:2308 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2287 +#: common/models.py:2314 msgid "Search Preview Results" msgstr "" -#: common/models.py:2289 +#: common/models.py:2316 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2295 +#: common/models.py:2322 msgid "Regex Search" msgstr "" -#: common/models.py:2296 +#: common/models.py:2323 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2301 +#: common/models.py:2328 msgid "Whole Word Search" msgstr "" -#: common/models.py:2302 +#: common/models.py:2329 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2307 +#: common/models.py:2334 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2308 +#: common/models.py:2335 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2313 +#: common/models.py:2340 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2314 +#: common/models.py:2341 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2319 +#: common/models.py:2346 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2320 +#: common/models.py:2347 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2325 +#: common/models.py:2352 msgid "Date Format" msgstr "" -#: common/models.py:2326 +#: common/models.py:2353 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2366 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2340 +#: common/models.py:2367 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2372 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2347 +#: common/models.py:2374 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2353 +#: common/models.py:2380 msgid "Table String Length" msgstr "" -#: common/models.py:2355 +#: common/models.py:2382 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2361 +#: common/models.py:2388 msgid "Default part label template" msgstr "" -#: common/models.py:2362 +#: common/models.py:2389 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2367 +#: common/models.py:2394 msgid "Default stock item template" msgstr "" -#: common/models.py:2369 +#: common/models.py:2396 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2375 +#: common/models.py:2402 msgid "Default stock location label template" msgstr "" -#: common/models.py:2377 +#: common/models.py:2404 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2383 +#: common/models.py:2410 msgid "Receive error reports" msgstr "" -#: common/models.py:2384 +#: common/models.py:2411 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2389 +#: common/models.py:2416 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2417 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2460 msgid "Price break quantity" msgstr "" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3503,23 +3536,23 @@ msgstr "" msgid "Price" msgstr "" -#: common/models.py:2441 +#: common/models.py:2468 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2639 common/models.py:2824 msgid "Endpoint" msgstr "" -#: common/models.py:2613 +#: common/models.py:2640 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2623 +#: common/models.py:2650 msgid "Name for this webhook" msgstr "" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3529,101 +3562,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2627 +#: common/models.py:2654 msgid "Is this webhook active" msgstr "" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2670 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2644 +#: common/models.py:2671 msgid "Token for access" msgstr "" -#: common/models.py:2652 +#: common/models.py:2679 msgid "Secret" msgstr "" -#: common/models.py:2653 +#: common/models.py:2680 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2761 +#: common/models.py:2788 msgid "Message ID" msgstr "" -#: common/models.py:2762 +#: common/models.py:2789 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2770 +#: common/models.py:2797 msgid "Host" msgstr "" -#: common/models.py:2771 +#: common/models.py:2798 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2779 +#: common/models.py:2806 msgid "Header" msgstr "" -#: common/models.py:2780 +#: common/models.py:2807 msgid "Header of this message" msgstr "" -#: common/models.py:2787 +#: common/models.py:2814 msgid "Body" msgstr "" -#: common/models.py:2788 +#: common/models.py:2815 msgid "Body of this message" msgstr "" -#: common/models.py:2798 +#: common/models.py:2825 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2803 +#: common/models.py:2830 msgid "Worked on" msgstr "" -#: common/models.py:2804 +#: common/models.py:2831 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2930 +#: common/models.py:2957 msgid "Id" msgstr "" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2959 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2963 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2965 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2967 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Read" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Was this news item read?" msgstr "" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2987 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3633,31 +3666,31 @@ msgstr "" msgid "Image" msgstr "이미지" -#: common/models.py:2960 +#: common/models.py:2987 msgid "Image file" msgstr "" -#: common/models.py:3002 +#: common/models.py:3029 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3021 +#: common/models.py:3048 msgid "Unit name" msgstr "" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3029 +#: common/models.py:3056 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3037 +#: common/models.py:3064 msgid "Unit definition" msgstr "" @@ -3961,7 +3994,7 @@ msgid "Link to address information (external)" msgstr "" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" @@ -3972,7 +4005,7 @@ msgstr "" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3987,7 +4020,7 @@ msgid "Select manufacturer" msgstr "" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4022,9 +4055,9 @@ msgstr "" #: company/models.py:615 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2438 templates/js/translated/company.js:1156 +#: stock/models.py:2441 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1519 msgid "Value" msgstr "" @@ -4033,7 +4066,7 @@ msgid "Parameter value" msgstr "" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4059,7 +4092,7 @@ msgstr "" #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4076,7 +4109,7 @@ msgstr "" msgid "Select supplier" msgstr "" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "" @@ -4093,13 +4126,13 @@ msgid "Supplier part description" msgstr "" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:579 msgid "Note" msgstr "" @@ -4112,10 +4145,10 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 -#: templates/js/translated/stock.js:2387 +#: templates/js/translated/stock.js:2423 msgid "Packaging" msgstr "" @@ -4157,7 +4190,7 @@ msgstr "" msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "" @@ -4218,13 +4251,13 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1100 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 #: templates/js/translated/return_order.js:296 #: templates/js/translated/sales_order.js:784 -#: templates/js/translated/stock.js:2923 +#: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:804 msgid "Customer" msgstr "고객" @@ -4429,8 +4462,9 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "" @@ -4482,7 +4516,7 @@ msgstr "" #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2243 +#: templates/js/translated/stock.js:2279 msgid "Supplier Part" msgstr "" @@ -4528,7 +4562,7 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4577,15 +4611,17 @@ msgstr "" msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 -#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:193 msgid "Stock Items" msgstr "" @@ -4639,8 +4675,8 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" @@ -4665,7 +4701,7 @@ msgstr "높이 [mm]" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "" @@ -4679,8 +4715,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "" @@ -4821,7 +4857,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1674 -#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "" @@ -4830,7 +4866,7 @@ msgstr "" #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 -#: templates/js/translated/stock.js:2905 +#: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "" @@ -4838,11 +4874,11 @@ msgstr "" msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -5029,9 +5065,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2274 +#: templates/js/translated/stock.js:2310 msgid "Purchase Price" msgstr "" @@ -5084,8 +5120,8 @@ msgstr "" msgid "User who checked this shipment" msgstr "" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "" @@ -5133,7 +5169,7 @@ msgstr "" msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "" @@ -5207,159 +5243,159 @@ msgstr "" msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "바코드" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "이미 사용 중인 바코드입니다" -#: order/serializers.py:610 +#: order/serializers.py:632 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1677 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "" @@ -5733,7 +5769,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" @@ -5763,12 +5799,12 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5780,12 +5816,12 @@ msgstr "" #: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 -#: templates/js/translated/stock.js:1999 +#: templates/js/translated/stock.js:2035 msgid "IPN" msgstr "" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" @@ -5861,10 +5897,10 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -5885,17 +5921,17 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3897 msgid "Part IPN" msgstr "" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5973,8 +6009,8 @@ msgstr "" msgid "This option must be selected" msgstr "" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5982,12 +6018,17 @@ msgstr "" msgid "Category" msgstr "" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5995,7 +6036,7 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -6010,7 +6051,8 @@ msgstr "" msgid "Default location for parts in this category" msgstr "" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 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" @@ -6076,7 +6118,7 @@ msgstr "" msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3896 msgid "Part name" msgstr "" @@ -6358,7 +6400,7 @@ msgstr "" #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1732 -#: templates/js/translated/stock.js:2785 +#: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" @@ -6410,586 +6452,602 @@ msgstr "" msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3448 -msgid "Test with this name already exists for this part" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "" -#: part/models.py:3496 +#: part/models.py:3505 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "" -#: part/models.py:3503 +#: part/models.py:3512 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "데이터" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3847 +#: part/models.py:3856 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3885 +#: part/models.py:3894 msgid "Part ID or part name" msgstr "" -#: part/models.py:3886 +#: part/models.py:3895 msgid "Unique part ID value" msgstr "" -#: part/models.py:3888 +#: part/models.py:3897 msgid "Part IPN value" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "Level" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "BOM level" msgstr "" -#: part/models.py:3979 +#: part/models.py:3988 msgid "Select parent part" msgstr "" -#: part/models.py:3989 +#: part/models.py:3998 msgid "Sub part" msgstr "" -#: part/models.py:3990 +#: part/models.py:3999 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4001 +#: part/models.py:4010 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4007 +#: part/models.py:4016 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4013 +#: part/models.py:4022 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4029 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4021 +#: part/models.py:4030 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4028 +#: part/models.py:4037 msgid "BOM item reference" msgstr "" -#: part/models.py:4036 +#: part/models.py:4045 msgid "BOM item notes" msgstr "" -#: part/models.py:4042 +#: part/models.py:4051 msgid "Checksum" msgstr "" -#: part/models.py:4043 +#: part/models.py:4052 msgid "BOM line checksum" msgstr "" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4057 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4049 +#: part/models.py:4058 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4063 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:4055 +#: part/models.py:4064 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4069 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4061 +#: part/models.py:4070 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4146 stock/models.py:649 +#: part/models.py:4155 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4165 part/models.py:4167 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4298 +#: part/models.py:4307 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4319 +#: part/models.py:4328 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4332 +#: part/models.py:4341 msgid "Parent BOM item" msgstr "" -#: part/models.py:4340 +#: part/models.py:4349 msgid "Substitute part" msgstr "" -#: part/models.py:4356 +#: part/models.py:4365 msgid "Part 1" msgstr "" -#: part/models.py:4364 +#: part/models.py:4373 msgid "Part 2" msgstr "" -#: part/models.py:4365 +#: part/models.py:4374 msgid "Select Related Part" msgstr "" -#: part/models.py:4384 +#: part/models.py:4393 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4389 +#: part/models.py:4398 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "이미지 복사" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:432 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:480 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1104 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1078 +#: part/serializers.py:1114 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1088 +#: part/serializers.py:1124 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1647 +#: part/serializers.py:1693 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1659 +#: part/serializers.py:1705 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1694 +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "" @@ -7147,7 +7205,7 @@ msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/stock.js:2179 users/models.py:191 +#: templates/js/translated/stock.js:2215 users/models.py:191 msgid "Stocktake" msgstr "" @@ -7221,7 +7279,7 @@ msgid "Validate BOM" msgstr "" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "" @@ -7405,7 +7463,7 @@ msgstr "" msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "" @@ -7509,7 +7567,7 @@ msgstr "" #: templates/InvenTree/settings/sidebar.html:51 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 -#: templates/js/translated/stock.js:2033 templates/navbar.html:31 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7555,7 +7613,7 @@ msgstr "" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 -#: templates/js/translated/stock.js:2209 +#: templates/js/translated/stock.js:2245 msgid "Last Updated" msgstr "" @@ -7999,7 +8057,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "" @@ -8307,16 +8365,16 @@ msgstr "" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "" @@ -8336,103 +8394,111 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" msgstr "" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" msgstr "" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8499,12 +8565,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1492 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Result" msgstr "" @@ -8531,7 +8597,7 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:168 #: stock/admin.py:162 templates/js/translated/stock.js:700 -#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110 msgid "Serial" msgstr "" @@ -8615,7 +8681,7 @@ msgstr "" #: stock/admin.py:256 stock/models.py:886 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2193 users/models.py:113 +#: templates/js/translated/stock.js:2229 users/models.py:113 msgid "Expiry Date" msgstr "" @@ -8713,7 +8779,7 @@ msgstr "" msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:174 templates/js/translated/stock.js:2745 +#: stock/models.py:174 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" @@ -8722,7 +8788,7 @@ msgstr "" msgid "This is an external stock location" msgstr "" -#: stock/models.py:181 templates/js/translated/stock.js:2754 +#: stock/models.py:181 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" @@ -8739,7 +8805,7 @@ msgstr "" msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:290 msgid "Stock item cannot be created for virtual parts" msgstr "" @@ -8784,7 +8850,7 @@ msgstr "" msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1351 msgid "Packaging this stock item is stored in" msgstr "" @@ -8796,7 +8862,7 @@ msgstr "" msgid "Serial number for this item" msgstr "" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1334 msgid "Batch code for this stock item" msgstr "" @@ -8873,7 +8939,7 @@ msgstr "" msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:529 msgid "Serial numbers already exist" msgstr "일련번호가 이미 존재합니다" @@ -8905,7 +8971,7 @@ msgstr "" msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1240 msgid "Duplicate stock items" msgstr "" @@ -8929,207 +8995,236 @@ msgstr "" msgid "Entry notes" msgstr "" -#: stock/models.py:2399 +#: stock/models.py:2402 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2405 +#: stock/models.py:2408 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Test result" msgstr "" -#: stock/models.py:2439 +#: stock/models.py:2442 msgid "Test output value" msgstr "" -#: stock/models.py:2447 +#: stock/models.py:2450 msgid "Test result attachment" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2454 msgid "Test notes" msgstr "" -#: stock/serializers.py:96 +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "" + +#: stock/models.py:2463 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2469 +msgid "Started" +msgstr "" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:100 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:119 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 +#: stock/serializers.py:151 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:184 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:267 +#: stock/serializers.py:282 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:380 +#: stock/serializers.py:402 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:442 +#: stock/serializers.py:464 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:455 +#: stock/serializers.py:477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:462 +#: stock/serializers.py:484 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:480 +#: stock/serializers.py:502 msgid "Optional note field" msgstr "" -#: stock/serializers.py:490 +#: stock/serializers.py:512 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:545 +#: stock/serializers.py:567 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:574 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:553 +#: stock/serializers.py:575 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:566 +#: stock/serializers.py:588 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:596 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:581 +#: stock/serializers.py:607 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:620 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:628 +#: stock/serializers.py:655 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:663 +#: stock/serializers.py:690 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:676 +#: stock/serializers.py:703 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:693 +#: stock/serializers.py:720 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:724 +#: stock/serializers.py:751 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:761 +#: stock/serializers.py:788 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:767 +#: stock/serializers.py:794 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1036 +#: stock/serializers.py:1069 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1040 +#: stock/serializers.py:1073 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1044 +#: stock/serializers.py:1077 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1068 +#: stock/serializers.py:1101 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1074 +#: stock/serializers.py:1107 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1082 +#: stock/serializers.py:1115 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1125 stock/serializers.py:1379 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1171 +#: stock/serializers.py:1204 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1176 +#: stock/serializers.py:1209 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1177 +#: stock/serializers.py:1210 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1182 +#: stock/serializers.py:1215 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1183 +#: stock/serializers.py:1216 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1193 +#: stock/serializers.py:1226 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1260 +#: stock/serializers.py:1293 msgid "No Change" msgstr "" -#: stock/serializers.py:1289 +#: stock/serializers.py:1322 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1308 +#: stock/serializers.py:1341 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1336 +#: stock/serializers.py:1369 msgid "Stock transaction notes" msgstr "" @@ -9154,7 +9249,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 msgid "Delete Test Data" msgstr "" @@ -9170,15 +9265,15 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:274 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 msgid "Add Test Result" msgstr "" @@ -9201,17 +9296,17 @@ msgid "Stock adjustment actions" msgstr "" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 msgid "Count stock" msgstr "" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:1803 msgid "Add stock" msgstr "" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1776 +#: templates/js/translated/stock.js:1812 msgid "Remove stock" msgstr "" @@ -9220,12 +9315,12 @@ msgid "Serialize stock" msgstr "" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 msgid "Transfer stock" msgstr "" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1884 msgid "Assign to customer" msgstr "" @@ -9364,7 +9459,7 @@ msgid "No stocktake performed" msgstr "" #: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1915 +#: templates/js/translated/stock.js:1951 msgid "stock item" msgstr "" @@ -9469,7 +9564,7 @@ msgid "New Location" msgstr "" #: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2536 +#: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" @@ -10063,7 +10158,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:37 msgid "New Location Type" msgstr "" @@ -10120,7 +10215,7 @@ msgstr "" msgid "Stock Settings" msgstr "" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:33 msgid "Stock Location Types" msgstr "" @@ -10662,7 +10757,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "" @@ -10676,7 +10771,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "" @@ -11051,62 +11146,66 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "" @@ -11389,7 +11488,7 @@ msgstr "" #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 -#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11401,7 +11500,7 @@ msgstr "" msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006 +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" @@ -11449,29 +11548,29 @@ msgstr "" msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "" @@ -11804,15 +11903,15 @@ msgstr "" msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3087 +#: templates/js/translated/forms.js:3103 msgid "Select Columns" msgstr "" @@ -12289,7 +12388,7 @@ msgid "No category" msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 -#: templates/js/translated/stock.js:2633 +#: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" @@ -12301,7 +12400,7 @@ msgstr "" msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" @@ -12313,64 +12412,64 @@ msgstr "" msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" @@ -12907,7 +13006,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1737 +#: templates/js/translated/stock.js:1773 msgid "Shipped to customer" msgstr "" @@ -13165,7 +13264,7 @@ msgstr "" msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" @@ -13189,248 +13288,256 @@ msgstr "" msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1440 +#: templates/js/translated/stock.js:1447 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1443 +#: templates/js/translated/stock.js:1450 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1466 +#: templates/js/translated/stock.js:1473 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1530 +#: templates/js/translated/stock.js:1537 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1677 +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1733 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1729 +#: templates/js/translated/stock.js:1765 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1769 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1741 +#: templates/js/translated/stock.js:1777 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1747 +#: templates/js/translated/stock.js:1783 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1839 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1848 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:1897 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1916 +#: templates/js/translated/stock.js:1952 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1921 +#: templates/js/translated/stock.js:1957 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1932 +#: templates/js/translated/stock.js:1968 msgid "Stock Actions" msgstr "" -#: templates/js/translated/stock.js:1976 +#: templates/js/translated/stock.js:2012 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2054 +#: templates/js/translated/stock.js:2090 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2059 +#: templates/js/translated/stock.js:2095 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2062 +#: templates/js/translated/stock.js:2098 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2065 +#: templates/js/translated/stock.js:2101 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2067 +#: templates/js/translated/stock.js:2103 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2069 +#: templates/js/translated/stock.js:2105 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2072 +#: templates/js/translated/stock.js:2108 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2074 +#: templates/js/translated/stock.js:2110 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2114 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2080 +#: templates/js/translated/stock.js:2116 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2085 +#: templates/js/translated/stock.js:2121 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2087 +#: templates/js/translated/stock.js:2123 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2089 +#: templates/js/translated/stock.js:2125 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2129 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2258 +#: templates/js/translated/stock.js:2294 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2305 +#: templates/js/translated/stock.js:2341 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2433 +#: templates/js/translated/stock.js:2469 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2573 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2692 +#: templates/js/translated/stock.js:2728 msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2810 +#: templates/js/translated/stock.js:2846 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2814 +#: templates/js/translated/stock.js:2850 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:2862 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2848 +#: templates/js/translated/stock.js:2884 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2865 +#: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2880 +#: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2897 +#: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2914 +#: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3005 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2977 +#: templates/js/translated/stock.js:3013 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:3049 +#: templates/js/translated/stock.js:3085 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139 +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:3161 +#: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:3182 +#: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:3183 +#: 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:3185 +#: 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:3186 +#: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:3187 +#: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:3188 +#: 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:3201 +#: templates/js/translated/stock.js:3237 msgid "Select part to install" msgstr "" -#: templates/js/translated/stock.js:3264 +#: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" msgstr "" -#: templates/js/translated/stock.js:3277 +#: templates/js/translated/stock.js:3313 msgid "Selected stock items" msgstr "" -#: templates/js/translated/stock.js:3281 +#: templates/js/translated/stock.js:3317 msgid "Change Stock Status" msgstr "" diff --git a/InvenTree/locale/lv/LC_MESSAGES/django.po b/InvenTree/locale/lv/LC_MESSAGES/django.po new file mode 100644 index 0000000000..cc2a979e41 --- /dev/null +++ b/InvenTree/locale/lv/LC_MESSAGES/django.po @@ -0,0 +1,14162 @@ +msgid "" +msgstr "" +"Project-Id-Version: inventree\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-03-19 01:26+0000\n" +"PO-Revision-Date: 2024-03-20 12:27\n" +"Last-Translator: \n" +"Language-Team: Latvian\n" +"Language: lv_LV\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==0 ? 0 : n%10==1 && n%100!=11 ? 1 : 2);\n" +"X-Crowdin-Project: inventree\n" +"X-Crowdin-Project-ID: 452300\n" +"X-Crowdin-Language: lv\n" +"X-Crowdin-File: /[inventree.InvenTree] l10/InvenTree/locale/en/LC_MESSAGES/django.po\n" +"X-Crowdin-File-ID: 154\n" + +#: InvenTree/api.py:198 +msgid "API endpoint not found" +msgstr "API galapunkts nav atrasts" + +#: InvenTree/api.py:462 +msgid "User does not have permission to view this model" +msgstr "Lietotājam nav atļaujas, lai apskatītu šo modeli" + +#: InvenTree/conversion.py:160 +#, python-brace-format +msgid "Invalid unit provided ({unit})" +msgstr "Norādīta nederīga vienība ({unit})" + +#: InvenTree/conversion.py:177 +msgid "No value provided" +msgstr "Nav norādīta vērtība" + +#: InvenTree/conversion.py:205 +#, python-brace-format +msgid "Could not convert {original} to {unit}" +msgstr "Nevarēja konvertēt {original} par {unit}" + +#: InvenTree/conversion.py:207 +msgid "Invalid quantity supplied" +msgstr "" + +#: InvenTree/conversion.py:221 +#, python-brace-format +msgid "Invalid quantity supplied ({exc})" +msgstr "" + +#: InvenTree/exceptions.py:109 +msgid "Error details can be found in the admin panel" +msgstr "" + +#: InvenTree/fields.py:140 +msgid "Enter date" +msgstr "Ievadiet datumu" + +#: InvenTree/fields.py:209 InvenTree/models.py:1022 build/serializers.py:438 +#: build/serializers.py:516 build/templates/build/sidebar.html:21 +#: company/models.py:835 company/templates/company/sidebar.html:37 +#: order/models.py:1271 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:3174 part/templates/part/part_sidebar.html:63 +#: report/templates/report/inventree_build_order_base.html:172 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 +#: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 +#: templates/js/translated/part.js:1080 +#: templates/js/translated/purchase_order.js:2201 +#: templates/js/translated/return_order.js:776 +#: templates/js/translated/sales_order.js:1067 +#: templates/js/translated/sales_order.js:1982 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 +msgid "Notes" +msgstr "Piezīmes" + +#: InvenTree/format.py:164 +#, python-brace-format +msgid "Value '{name}' does not appear in pattern format" +msgstr "Vērtība '{name}' neparādās vajadzīgajā formātā" + +#: InvenTree/format.py:175 +msgid "Provided value does not match required pattern: " +msgstr "Norādītā vērtība neatbilst nepieciešamajam formātam: " + +#: InvenTree/forms.py:128 +msgid "Enter password" +msgstr "Ievadiet paroli" + +#: InvenTree/forms.py:129 +msgid "Enter new password" +msgstr "Ievadiet jaunu paroli" + +#: InvenTree/forms.py:138 +msgid "Confirm password" +msgstr "Apstiprināt paroli" + +#: InvenTree/forms.py:139 +msgid "Confirm new password" +msgstr "Apstiprināt jauno paroli" + +#: InvenTree/forms.py:143 +msgid "Old password" +msgstr "Vecā parole" + +#: InvenTree/forms.py:182 +msgid "Email (again)" +msgstr "E-pasts (vēlreiz)" + +#: InvenTree/forms.py:186 +msgid "Email address confirmation" +msgstr "E-pasta adreses apstiprinājums" + +#: InvenTree/forms.py:209 +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 +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 +msgid "The provided email domain is not approved." +msgstr "Norādītais e-pasta domēns nav apstiprināts." + +#: InvenTree/forms.py:395 +msgid "Registration is disabled." +msgstr "Reģistrācija ir izslēgta." + +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 +msgid "Invalid quantity provided" +msgstr "Norādītais daudzums nav derīgs" + +#: InvenTree/helpers.py:536 +msgid "Empty serial number string" +msgstr "Tukša sērijas numura rinda" + +#: InvenTree/helpers.py:565 +msgid "Duplicate serial" +msgstr "Atkārtojas sērijas numurs" + +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 +#, python-brace-format +msgid "Invalid group range: {group}" +msgstr "Nederīgs grupas diapazons: {group}" + +#: InvenTree/helpers.py:628 +#, python-brace-format +msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" +msgstr "Grupas diapazons {group} pārsniedz pieļaujamo daudzumu ({expected_quantity})" + +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 +#, python-brace-format +msgid "Invalid group sequence: {group}" +msgstr "Nederīga grupas secība: {group}" + +#: InvenTree/helpers.py:694 +msgid "No serial numbers found" +msgstr "Netika atrasts neviens sērijas numurs" + +#: InvenTree/helpers.py:699 +msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" +msgstr "Unikālo sērijas numuru skaitam ({len(serials)}) jāatbilst daudzumam ({expected_quantity})" + +#: InvenTree/helpers.py:817 +msgid "Remove HTML tags from this value" +msgstr "Noņemiet HTML tagus no šīs vērtības" + +#: InvenTree/helpers_model.py:150 +msgid "Connection error" +msgstr "Savienojuma kļūda" + +#: InvenTree/helpers_model.py:155 InvenTree/helpers_model.py:162 +msgid "Server responded with invalid status code" +msgstr "Serveris atbildēja ar nederīgu statusa kodu" + +#: InvenTree/helpers_model.py:158 +msgid "Exception occurred" +msgstr "Radās izņēmums" + +#: InvenTree/helpers_model.py:168 +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 +msgid "Image size is too large" +msgstr "Attēla izmērs ir pārāk liels" + +#: InvenTree/helpers_model.py:183 +msgid "Image download exceeded maximum size" +msgstr "Attēla lejupielāde pārsniedz maksimālo izmēru" + +#: InvenTree/helpers_model.py:188 +msgid "Remote server returned empty response" +msgstr "Attālais serveris atgrieza tukšu atbildi" + +#: InvenTree/helpers_model.py:196 +msgid "Supplied URL is not a valid image file" +msgstr "Norādītajā URL nav derīgs attēla fails" + +#: InvenTree/locales.py:18 +msgid "Bulgarian" +msgstr "Bulgāru" + +#: InvenTree/locales.py:19 +msgid "Czech" +msgstr "Čehu" + +#: InvenTree/locales.py:20 +msgid "Danish" +msgstr "Dāņu" + +#: InvenTree/locales.py:21 +msgid "German" +msgstr "Vācu" + +#: InvenTree/locales.py:22 +msgid "Greek" +msgstr "Grieķu" + +#: InvenTree/locales.py:23 +msgid "English" +msgstr "Angļu" + +#: InvenTree/locales.py:24 +msgid "Spanish" +msgstr "Spāņu" + +#: InvenTree/locales.py:25 +msgid "Spanish (Mexican)" +msgstr "Spāņu (Meksikāņu)" + +#: InvenTree/locales.py:26 +msgid "Farsi / Persian" +msgstr "Farsi / Persiešu" + +#: InvenTree/locales.py:27 +msgid "Finnish" +msgstr "Somu" + +#: 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 "Russian" +msgstr "" + +#: InvenTree/locales.py:42 +msgid "Slovak" +msgstr "" + +#: InvenTree/locales.py:43 +msgid "Slovenian" +msgstr "" + +#: InvenTree/locales.py:44 +msgid "Serbian" +msgstr "" + +#: InvenTree/locales.py:45 +msgid "Swedish" +msgstr "" + +#: InvenTree/locales.py:46 +msgid "Thai" +msgstr "" + +#: InvenTree/locales.py:47 +msgid "Turkish" +msgstr "" + +#: InvenTree/locales.py:48 +msgid "Vietnamese" +msgstr "" + +#: InvenTree/locales.py:49 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:50 +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:132 +#: company/templates/company/company_base.html:132 +#: templates/InvenTree/settings/user.html:49 +#: templates/js/translated/company.js:667 +msgid "Email" +msgstr "" + +#: InvenTree/models.py:107 +msgid "Error running plugin validation" +msgstr "" + +#: InvenTree/models.py:162 +msgid "Metadata must be a python dict object" +msgstr "" + +#: InvenTree/models.py:168 +msgid "Plugin Metadata" +msgstr "" + +#: InvenTree/models.py:169 +msgid "JSON metadata field, for use by external plugins" +msgstr "" + +#: InvenTree/models.py:399 +msgid "Improperly formatted pattern" +msgstr "" + +#: InvenTree/models.py:406 +msgid "Unknown format key specified" +msgstr "" + +#: InvenTree/models.py:412 +msgid "Missing required format key" +msgstr "" + +#: InvenTree/models.py:423 +msgid "Reference field cannot be empty" +msgstr "" + +#: InvenTree/models.py:431 +msgid "Reference must match required pattern" +msgstr "" + +#: InvenTree/models.py:463 +msgid "Reference number is too large" +msgstr "" + +#: InvenTree/models.py:537 +msgid "Missing file" +msgstr "" + +#: InvenTree/models.py:538 +msgid "Missing external link" +msgstr "" + +#: InvenTree/models.py:559 stock/models.py:2449 +#: templates/js/translated/attachment.js:119 +#: templates/js/translated/attachment.js:326 +msgid "Attachment" +msgstr "" + +#: InvenTree/models.py:560 +msgid "Select file to attach" +msgstr "" + +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 +#: company/models.py:452 company/models.py:509 company/models.py:818 +#: order/models.py:279 order/models.py:1276 order/models.py:1690 +#: part/admin.py:55 part/models.py:918 +#: part/templates/part/part_scheduling.html:11 +#: report/templates/report/inventree_build_order_base.html:164 +#: stock/admin.py:225 templates/js/translated/company.js:1309 +#: templates/js/translated/company.js:1663 templates/js/translated/order.js:351 +#: templates/js/translated/part.js:2456 +#: templates/js/translated/purchase_order.js:2041 +#: templates/js/translated/purchase_order.js:2205 +#: templates/js/translated/return_order.js:780 +#: templates/js/translated/sales_order.js:1056 +#: templates/js/translated/sales_order.js:1987 +msgid "Link" +msgstr "" + +#: InvenTree/models.py:569 build/models.py:309 part/models.py:919 +#: stock/models.py:822 +msgid "Link to external URL" +msgstr "" + +#: InvenTree/models.py:575 templates/js/translated/attachment.js:120 +#: templates/js/translated/attachment.js:341 +msgid "Comment" +msgstr "" + +#: InvenTree/models.py:576 +msgid "File comment" +msgstr "" + +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 +#: part/models.py:3271 part/models.py:3364 part/models.py:3392 +#: plugin/models.py:251 plugin/models.py:252 +#: report/templates/report/inventree_test_report_base.html:105 +#: templates/js/translated/stock.js:3036 users/models.py:100 +msgid "User" +msgstr "" + +#: InvenTree/models.py:589 +msgid "upload date" +msgstr "" + +#: InvenTree/models.py:611 +msgid "Filename must not be empty" +msgstr "" + +#: InvenTree/models.py:622 +msgid "Invalid attachment directory" +msgstr "" + +#: InvenTree/models.py:652 +#, python-brace-format +msgid "Filename contains illegal character '{c}'" +msgstr "" + +#: InvenTree/models.py:655 +msgid "Filename missing extension" +msgstr "" + +#: InvenTree/models.py:664 +msgid "Attachment with this filename already exists" +msgstr "" + +#: InvenTree/models.py:671 +msgid "Error renaming file" +msgstr "" + +#: InvenTree/models.py:847 +msgid "Duplicate names cannot exist under the same parent" +msgstr "" + +#: InvenTree/models.py:864 +msgid "Invalid choice" +msgstr "" + +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 +#: common/serializers.py:370 company/models.py:608 label/models.py:120 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 +#: templates/InvenTree/settings/mixins/urls.html:13 +#: templates/InvenTree/settings/notifications.html:17 +#: templates/InvenTree/settings/plugin.html:81 +#: templates/InvenTree/settings/plugin_settings.html:22 +#: templates/InvenTree/settings/settings_staff_js.html:67 +#: templates/InvenTree/settings/settings_staff_js.html:446 +#: templates/js/translated/company.js:666 +#: templates/js/translated/company.js:714 +#: templates/js/translated/company.js:903 +#: templates/js/translated/company.js:1155 +#: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 +#: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 +msgid "Name" +msgstr "" + +#: InvenTree/models.py:900 build/models.py:182 +#: build/templates/build/detail.html:24 common/models.py:136 +#: company/models.py:517 company/models.py:826 +#: company/templates/company/company_base.html:71 +#: company/templates/company/manufacturer_part.html:75 +#: company/templates/company/supplier_part.html:107 label/models.py:127 +#: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 +#: part/templates/part/part_base.html:170 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 +#: report/templates/report/inventree_build_order_base.html:117 +#: stock/admin.py:55 stock/models.py:82 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:2137 templates/js/translated/company.js:518 +#: templates/js/translated/company.js:1320 +#: templates/js/translated/company.js:1631 templates/js/translated/index.js:119 +#: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 +#: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 +#: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 +#: templates/js/translated/plugin.js:80 +#: templates/js/translated/purchase_order.js:1707 +#: templates/js/translated/purchase_order.js:1850 +#: templates/js/translated/purchase_order.js:2023 +#: templates/js/translated/return_order.js:314 +#: templates/js/translated/sales_order.js:802 +#: templates/js/translated/sales_order.js:1812 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 +msgid "Description" +msgstr "" + +#: InvenTree/models.py:901 stock/models.py:83 +msgid "Description (optional)" +msgstr "" + +#: InvenTree/models.py:910 +msgid "parent" +msgstr "" + +#: InvenTree/models.py:916 templates/js/translated/part.js:2794 +#: templates/js/translated/stock.js:2757 +msgid "Path" +msgstr "" + +#: InvenTree/models.py:1022 +msgid "Markdown notes (optional)" +msgstr "" + +#: InvenTree/models.py:1051 +msgid "Barcode Data" +msgstr "" + +#: InvenTree/models.py:1052 +msgid "Third party barcode data" +msgstr "" + +#: InvenTree/models.py:1058 +msgid "Barcode Hash" +msgstr "" + +#: InvenTree/models.py:1059 +msgid "Unique hash of barcode data" +msgstr "" + +#: InvenTree/models.py:1112 +msgid "Existing barcode found" +msgstr "" + +#: InvenTree/models.py:1155 +msgid "Server Error" +msgstr "" + +#: InvenTree/models.py:1156 +msgid "An error has been logged by the server." +msgstr "" + +#: InvenTree/serializers.py:62 part/models.py:4143 +msgid "Must be a valid number" +msgstr "" + +#: InvenTree/serializers.py:99 company/models.py:178 +#: company/templates/company/company_base.html:106 part/models.py:2992 +#: templates/InvenTree/settings/settings_staff_js.html:44 +#: templates/currency_data.html:5 +msgid "Currency" +msgstr "" + +#: InvenTree/serializers.py:102 +msgid "Select currency from available options" +msgstr "" + +#: InvenTree/serializers.py:441 +msgid "You do not have permission to change this user role." +msgstr "" + +#: InvenTree/serializers.py:453 +msgid "Only superusers can create new users" +msgstr "" + +#: InvenTree/serializers.py:472 +msgid "Your account has been created." +msgstr "" + +#: InvenTree/serializers.py:474 +msgid "Please use the password reset function to login" +msgstr "" + +#: InvenTree/serializers.py:481 +msgid "Welcome to InvenTree" +msgstr "" + +#: InvenTree/serializers.py:542 +msgid "Filename" +msgstr "" + +#: InvenTree/serializers.py:576 +msgid "Invalid value" +msgstr "" + +#: InvenTree/serializers.py:596 +msgid "Data File" +msgstr "" + +#: InvenTree/serializers.py:597 +msgid "Select data file for upload" +msgstr "" + +#: InvenTree/serializers.py:614 +msgid "Unsupported file type" +msgstr "" + +#: InvenTree/serializers.py:620 +msgid "File is too large" +msgstr "" + +#: InvenTree/serializers.py:641 +msgid "No columns found in file" +msgstr "" + +#: InvenTree/serializers.py:644 +msgid "No data rows found in file" +msgstr "" + +#: InvenTree/serializers.py:757 +msgid "No data rows provided" +msgstr "" + +#: InvenTree/serializers.py:760 +msgid "No data columns supplied" +msgstr "" + +#: InvenTree/serializers.py:827 +#, python-brace-format +msgid "Missing required column: '{name}'" +msgstr "" + +#: InvenTree/serializers.py:836 +#, python-brace-format +msgid "Duplicate column: '{col}'" +msgstr "" + +#: InvenTree/serializers.py:859 +msgid "Remote Image" +msgstr "" + +#: InvenTree/serializers.py:860 +msgid "URL of remote image file" +msgstr "" + +#: InvenTree/serializers.py:878 +msgid "Downloading images from remote URL is not enabled" +msgstr "" + +#: InvenTree/status.py:66 part/serializers.py:1156 +msgid "Background worker check failed" +msgstr "" + +#: InvenTree/status.py:70 +msgid "Email backend not configured" +msgstr "" + +#: InvenTree/status.py:73 +msgid "InvenTree system health checks failed" +msgstr "" + +#: InvenTree/status_codes.py:12 InvenTree/status_codes.py:37 +#: InvenTree/status_codes.py:148 InvenTree/status_codes.py:164 +#: InvenTree/status_codes.py:182 generic/states/tests.py:17 +#: templates/js/translated/table_filters.js:598 +msgid "Pending" +msgstr "" + +#: InvenTree/status_codes.py:13 generic/states/tests.py:18 +msgid "Placed" +msgstr "" + +#: InvenTree/status_codes.py:14 InvenTree/status_codes.py:151 +#: InvenTree/status_codes.py:169 generic/states/tests.py:19 +#: order/templates/order/order_base.html:158 +#: order/templates/order/sales_order_base.html:161 +msgid "Complete" +msgstr "" + +#: InvenTree/status_codes.py:15 InvenTree/status_codes.py:44 +#: InvenTree/status_codes.py:150 InvenTree/status_codes.py:170 +msgid "Cancelled" +msgstr "" + +#: InvenTree/status_codes.py:16 InvenTree/status_codes.py:45 +#: InvenTree/status_codes.py:67 +msgid "Lost" +msgstr "" + +#: InvenTree/status_codes.py:17 InvenTree/status_codes.py:46 +#: InvenTree/status_codes.py:73 +msgid "Returned" +msgstr "" + +#: InvenTree/status_codes.py:40 InvenTree/status_codes.py:167 +msgid "In Progress" +msgstr "" + +#: InvenTree/status_codes.py:43 order/models.py:1552 +#: templates/js/translated/sales_order.js:1523 +#: templates/js/translated/sales_order.js:1644 +#: templates/js/translated/sales_order.js:1957 +msgid "Shipped" +msgstr "" + +#: InvenTree/status_codes.py:62 +msgid "OK" +msgstr "" + +#: InvenTree/status_codes.py:63 +msgid "Attention needed" +msgstr "" + +#: InvenTree/status_codes.py:64 +msgid "Damaged" +msgstr "" + +#: InvenTree/status_codes.py:65 +msgid "Destroyed" +msgstr "" + +#: InvenTree/status_codes.py:66 +msgid "Rejected" +msgstr "" + +#: InvenTree/status_codes.py:70 +msgid "Quarantined" +msgstr "" + +#: InvenTree/status_codes.py:91 +msgid "Legacy stock tracking entry" +msgstr "" + +#: InvenTree/status_codes.py:93 templates/js/translated/stock.js:544 +msgid "Stock item created" +msgstr "" + +#: InvenTree/status_codes.py:96 +msgid "Edited stock item" +msgstr "" + +#: InvenTree/status_codes.py:97 +msgid "Assigned serial number" +msgstr "" + +#: InvenTree/status_codes.py:100 +msgid "Stock counted" +msgstr "" + +#: InvenTree/status_codes.py:101 +msgid "Stock manually added" +msgstr "" + +#: InvenTree/status_codes.py:102 +msgid "Stock manually removed" +msgstr "" + +#: InvenTree/status_codes.py:105 +msgid "Location changed" +msgstr "" + +#: InvenTree/status_codes.py:106 +msgid "Stock updated" +msgstr "" + +#: InvenTree/status_codes.py:109 +msgid "Installed into assembly" +msgstr "" + +#: InvenTree/status_codes.py:110 +msgid "Removed from assembly" +msgstr "" + +#: InvenTree/status_codes.py:112 +msgid "Installed component item" +msgstr "" + +#: InvenTree/status_codes.py:113 +msgid "Removed component item" +msgstr "" + +#: InvenTree/status_codes.py:116 +msgid "Split from parent item" +msgstr "" + +#: InvenTree/status_codes.py:117 +msgid "Split child item" +msgstr "" + +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 +msgid "Merged stock items" +msgstr "" + +#: InvenTree/status_codes.py:123 +msgid "Converted to variant" +msgstr "" + +#: InvenTree/status_codes.py:126 +msgid "Build order output created" +msgstr "" + +#: InvenTree/status_codes.py:127 +msgid "Build order output completed" +msgstr "" + +#: InvenTree/status_codes.py:128 +msgid "Build order output rejected" +msgstr "" + +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 +msgid "Consumed by build order" +msgstr "" + +#: InvenTree/status_codes.py:132 +msgid "Shipped against Sales Order" +msgstr "" + +#: InvenTree/status_codes.py:135 +msgid "Received against Purchase Order" +msgstr "" + +#: InvenTree/status_codes.py:138 +msgid "Returned against Return Order" +msgstr "" + +#: InvenTree/status_codes.py:141 templates/js/translated/table_filters.js:375 +msgid "Sent to customer" +msgstr "" + +#: InvenTree/status_codes.py:142 +msgid "Returned from customer" +msgstr "" + +#: InvenTree/status_codes.py:149 +msgid "Production" +msgstr "" + +#: InvenTree/status_codes.py:185 +msgid "Return" +msgstr "" + +#: InvenTree/status_codes.py:188 +msgid "Repair" +msgstr "" + +#: InvenTree/status_codes.py:191 +msgid "Replace" +msgstr "" + +#: InvenTree/status_codes.py:194 +msgid "Refund" +msgstr "" + +#: InvenTree/status_codes.py:197 +msgid "Reject" +msgstr "" + +#: InvenTree/templatetags/inventree_extras.py:183 +msgid "Unknown database" +msgstr "" + +#: InvenTree/validators.py:31 InvenTree/validators.py:33 +msgid "Invalid physical unit" +msgstr "" + +#: InvenTree/validators.py:39 +msgid "Not a valid currency code" +msgstr "" + +#: InvenTree/validators.py:121 InvenTree/validators.py:137 +msgid "Overage value must not be negative" +msgstr "" + +#: InvenTree/validators.py:139 +msgid "Overage must not exceed 100%" +msgstr "" + +#: InvenTree/validators.py:145 +msgid "Invalid value for overage" +msgstr "" + +#: InvenTree/views.py:400 templates/InvenTree/settings/user.html:23 +msgid "Edit User Information" +msgstr "" + +#: InvenTree/views.py:412 templates/InvenTree/settings/user.html:20 +msgid "Set Password" +msgstr "" + +#: InvenTree/views.py:434 +msgid "Password fields must match" +msgstr "" + +#: InvenTree/views.py:442 +msgid "Wrong password provided" +msgstr "" + +#: InvenTree/views.py:650 templates/navbar.html:160 +msgid "System Information" +msgstr "" + +#: InvenTree/views.py:657 templates/navbar.html:171 +msgid "About InvenTree" +msgstr "" + +#: build/api.py:237 +msgid "Build must be cancelled before it can be deleted" +msgstr "" + +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 +#: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 +#: templates/js/translated/table_filters.js:190 +#: templates/js/translated/table_filters.js:583 +msgid "Consumable" +msgstr "" + +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 +#: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 +#: templates/js/translated/build.js:2530 +#: 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:283 templates/js/translated/table_filters.js:408 +#: templates/js/translated/table_filters.js:579 +msgid "Tracked" +msgstr "" + +#: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 +#: templates/js/translated/build.js:2630 +#: templates/js/translated/sales_order.js:1929 +#: templates/js/translated/table_filters.js:571 +msgid "Allocated" +msgstr "" + +#: build/api.py:293 company/models.py:890 +#: 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:2562 +#: templates/js/translated/index.js:123 +#: templates/js/translated/model_renderers.js:228 +#: templates/js/translated/part.js:692 templates/js/translated/part.js:694 +#: templates/js/translated/part.js:699 +#: templates/js/translated/table_filters.js:340 +#: templates/js/translated/table_filters.js:575 +msgid "Available" +msgstr "" + +#: build/models.py:74 build/templates/build/build_base.html:9 +#: build/templates/build/build_base.html:27 +#: report/templates/report/inventree_build_order_base.html:105 +#: templates/email/build_order_completed.html:16 +#: templates/email/overdue_build_order.html:15 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 +msgid "Build Order" +msgstr "" + +#: build/models.py:75 build/templates/build/build_base.html:13 +#: build/templates/build/index.html:8 build/templates/build/index.html:12 +#: order/templates/order/sales_order_detail.html:111 +#: order/templates/order/so_sidebar.html:13 +#: part/templates/part/part_sidebar.html:22 templates/InvenTree/index.html:196 +#: templates/InvenTree/search.html:141 +#: templates/InvenTree/settings/sidebar.html:55 +#: templates/js/translated/search.js:186 users/models.py:194 +msgid "Build Orders" +msgstr "" + +#: build/models.py:116 +msgid "Invalid choice for parent build" +msgstr "" + +#: build/models.py:127 +msgid "Build order part cannot be changed" +msgstr "" + +#: build/models.py:173 +msgid "Build Order Reference" +msgstr "" + +#: build/models.py:174 order/models.py:430 order/models.py:886 +#: order/models.py:1264 order/models.py:1981 part/admin.py:417 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 +#: report/templates/report/inventree_bill_of_materials_report.html:139 +#: report/templates/report/inventree_po_report_base.html:28 +#: report/templates/report/inventree_return_order_report_base.html:26 +#: report/templates/report/inventree_so_report_base.html:28 +#: templates/js/translated/bom.js:770 templates/js/translated/bom.js:973 +#: templates/js/translated/build.js:2513 templates/js/translated/order.js:291 +#: templates/js/translated/pricing.js:386 +#: templates/js/translated/purchase_order.js:2066 +#: templates/js/translated/return_order.js:729 +#: templates/js/translated/sales_order.js:1818 +msgid "Reference" +msgstr "" + +#: build/models.py:185 +msgid "Brief description of the build (optional)" +msgstr "" + +#: build/models.py:193 build/templates/build/build_base.html:183 +#: build/templates/build/detail.html:87 +msgid "Parent Build" +msgstr "" + +#: build/models.py:194 +msgid "BuildOrder to which this build is allocated" +msgstr "" + +#: build/models.py:199 build/templates/build/build_base.html:97 +#: build/templates/build/detail.html:29 company/models.py:1044 +#: order/models.py:1389 order/models.py:1532 order/models.py:1533 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 +#: part/templates/part/part_app_base.html:8 +#: part/templates/part/part_pricing.html:12 +#: part/templates/part/upload_bom.html:52 +#: report/templates/report/inventree_bill_of_materials_report.html:110 +#: report/templates/report/inventree_bill_of_materials_report.html:137 +#: report/templates/report/inventree_build_order_base.html:109 +#: report/templates/report/inventree_po_report_base.html:27 +#: report/templates/report/inventree_return_order_report_base.html:24 +#: report/templates/report/inventree_slr_report.html:102 +#: report/templates/report/inventree_so_report_base.html:27 +#: stock/serializers.py:267 stock/serializers.py:689 +#: 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:1309 templates/js/translated/build.js:1740 +#: templates/js/translated/build.js:2160 templates/js/translated/build.js:2333 +#: templates/js/translated/company.js:348 +#: templates/js/translated/company.js:1106 +#: templates/js/translated/company.js:1261 +#: templates/js/translated/company.js:1549 templates/js/translated/index.js:109 +#: templates/js/translated/part.js:1943 templates/js/translated/part.js:2015 +#: templates/js/translated/part.js:2324 templates/js/translated/pricing.js:369 +#: templates/js/translated/purchase_order.js:751 +#: templates/js/translated/purchase_order.js:1304 +#: templates/js/translated/purchase_order.js:1849 +#: templates/js/translated/purchase_order.js:2008 +#: templates/js/translated/return_order.js:539 +#: templates/js/translated/return_order.js:710 +#: templates/js/translated/sales_order.js:300 +#: templates/js/translated/sales_order.js:1197 +#: templates/js/translated/sales_order.js:1598 +#: templates/js/translated/sales_order.js:1796 +#: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 +msgid "Part" +msgstr "" + +#: build/models.py:207 +msgid "Select part to build" +msgstr "" + +#: build/models.py:212 +msgid "Sales Order Reference" +msgstr "" + +#: build/models.py:216 +msgid "SalesOrder to which this build is allocated" +msgstr "" + +#: build/models.py:221 build/serializers.py:964 +#: templates/js/translated/build.js:1728 +#: templates/js/translated/sales_order.js:1185 +msgid "Source Location" +msgstr "" + +#: build/models.py:225 +msgid "Select location to take stock from for this build (leave blank to take from any stock location)" +msgstr "" + +#: build/models.py:230 +msgid "Destination Location" +msgstr "" + +#: build/models.py:234 +msgid "Select location where the completed items will be stored" +msgstr "" + +#: build/models.py:238 +msgid "Build Quantity" +msgstr "" + +#: build/models.py:241 +msgid "Number of stock items to build" +msgstr "" + +#: build/models.py:245 +msgid "Completed items" +msgstr "" + +#: build/models.py:247 +msgid "Number of stock items which have been completed" +msgstr "" + +#: build/models.py:251 +msgid "Build Status" +msgstr "" + +#: build/models.py:255 +msgid "Build status code" +msgstr "" + +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 +#: templates/js/translated/purchase_order.js:1129 +msgid "Batch Code" +msgstr "" + +#: build/models.py:268 build/serializers.py:281 +msgid "Batch code for this build output" +msgstr "" + +#: build/models.py:271 order/models.py:292 part/models.py:1078 +#: part/templates/part/part_base.html:310 +#: templates/js/translated/return_order.js:339 +#: templates/js/translated/sales_order.js:827 +msgid "Creation Date" +msgstr "" + +#: build/models.py:275 +msgid "Target completion date" +msgstr "" + +#: build/models.py:276 +msgid "Target date for build completion. Build will be overdue after this date." +msgstr "" + +#: build/models.py:279 order/models.py:488 order/models.py:2026 +#: templates/js/translated/build.js:2245 +msgid "Completion Date" +msgstr "" + +#: build/models.py:285 +msgid "completed by" +msgstr "" + +#: build/models.py:293 templates/js/translated/build.js:2205 +msgid "Issued by" +msgstr "" + +#: build/models.py:294 +msgid "User who issued this build order" +msgstr "" + +#: build/models.py:302 build/templates/build/build_base.html:204 +#: build/templates/build/detail.html:122 common/models.py:145 +#: order/models.py:310 order/templates/order/order_base.html:217 +#: order/templates/order/return_order_base.html:188 +#: order/templates/order/sales_order_base.html:228 part/models.py:1095 +#: part/templates/part/part_base.html:390 +#: report/templates/report/inventree_build_order_base.html:158 +#: templates/InvenTree/settings/settings_staff_js.html:150 +#: templates/js/translated/build.js:2217 +#: templates/js/translated/purchase_order.js:1764 +#: templates/js/translated/return_order.js:359 +#: templates/js/translated/table_filters.js:531 +msgid "Responsible" +msgstr "" + +#: build/models.py:303 +msgid "User or group responsible for this build order" +msgstr "" + +#: build/models.py:308 build/templates/build/detail.html:108 +#: company/templates/company/manufacturer_part.html:107 +#: company/templates/company/supplier_part.html:194 +#: order/templates/order/order_base.html:167 +#: order/templates/order/return_order_base.html:145 +#: order/templates/order/sales_order_base.html:180 +#: part/templates/part/part_base.html:383 stock/models.py:822 +#: stock/templates/stock/item_base.html:200 +#: templates/js/translated/company.js:1009 +msgid "External Link" +msgstr "" + +#: build/models.py:313 +msgid "Build Priority" +msgstr "" + +#: build/models.py:316 +msgid "Priority of this build order" +msgstr "" + +#: build/models.py:323 common/models.py:129 order/admin.py:18 +#: order/models.py:274 templates/InvenTree/settings/settings_staff_js.html:146 +#: templates/js/translated/build.js:2142 +#: templates/js/translated/purchase_order.js:1711 +#: templates/js/translated/return_order.js:318 +#: templates/js/translated/sales_order.js:806 +#: templates/js/translated/table_filters.js:48 +#: templates/project_code_data.html:6 +msgid "Project Code" +msgstr "" + +#: build/models.py:324 +msgid "Project code for this build order" +msgstr "" + +#: build/models.py:575 +#, python-brace-format +msgid "Build order {build} has been completed" +msgstr "" + +#: build/models.py:581 +msgid "A build order has been completed" +msgstr "" + +#: build/models.py:799 build/models.py:874 +msgid "No build output specified" +msgstr "" + +#: build/models.py:802 +msgid "Build output is already completed" +msgstr "" + +#: build/models.py:805 +msgid "Build output does not match Build Order" +msgstr "" + +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 +msgid "Quantity must be greater than zero" +msgstr "" + +#: build/models.py:883 build/serializers.py:228 +msgid "Quantity cannot be greater than the output quantity" +msgstr "" + +#: build/models.py:940 build/serializers.py:533 +#, python-brace-format +msgid "Build output {serial} has not passed all required tests" +msgstr "" + +#: build/models.py:1302 +msgid "Build object" +msgstr "" + +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 +#: build/serializers.py:247 build/templates/build/build_base.html:102 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 +#: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 +#: part/templates/part/part_pricing.html:16 +#: part/templates/part/upload_bom.html:53 +#: report/templates/report/inventree_bill_of_materials_report.html:138 +#: report/templates/report/inventree_build_order_base.html:113 +#: report/templates/report/inventree_po_report_base.html:29 +#: report/templates/report/inventree_slr_report.html:104 +#: report/templates/report/inventree_so_report_base.html:29 +#: report/templates/report/inventree_test_report_base.html:90 +#: report/templates/report/inventree_test_report_base.html:170 +#: stock/admin.py:160 stock/serializers.py:463 +#: 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:1366 +#: templates/js/translated/build.js:1743 templates/js/translated/build.js:2355 +#: templates/js/translated/company.js:1808 +#: templates/js/translated/model_renderers.js:230 +#: templates/js/translated/order.js:304 templates/js/translated/part.js:961 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 +#: 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:1853 +#: templates/js/translated/purchase_order.js:2072 +#: templates/js/translated/sales_order.js:317 +#: templates/js/translated/sales_order.js:1199 +#: templates/js/translated/sales_order.js:1518 +#: templates/js/translated/sales_order.js:1608 +#: templates/js/translated/sales_order.js:1698 +#: templates/js/translated/sales_order.js:1824 +#: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 +msgid "Quantity" +msgstr "" + +#: build/models.py:1317 +msgid "Required quantity for build order" +msgstr "" + +#: build/models.py:1397 +msgid "Build item must specify a build output, as master part is marked as trackable" +msgstr "" + +#: build/models.py:1406 +#, python-brace-format +msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" +msgstr "" + +#: build/models.py:1416 order/models.py:1853 +msgid "Stock item is over-allocated" +msgstr "" + +#: build/models.py:1422 order/models.py:1856 +msgid "Allocation quantity must be greater than zero" +msgstr "" + +#: build/models.py:1428 +msgid "Quantity must be 1 for serialized stock" +msgstr "" + +#: build/models.py:1489 +msgid "Selected stock item does not match BOM line" +msgstr "" + +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 +#: templates/js/translated/sales_order.js:301 +#: templates/js/translated/sales_order.js:1198 +#: templates/js/translated/sales_order.js:1499 +#: templates/js/translated/sales_order.js:1504 +#: templates/js/translated/sales_order.js:1605 +#: templates/js/translated/sales_order.js:1692 +#: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 +#: templates/js/translated/stock.js:2977 +msgid "Stock Item" +msgstr "" + +#: build/models.py:1562 +msgid "Source stock item" +msgstr "" + +#: build/models.py:1575 +msgid "Stock quantity to allocate to build" +msgstr "" + +#: build/models.py:1583 +msgid "Install into" +msgstr "" + +#: build/models.py:1584 +msgid "Destination stock item" +msgstr "" + +#: build/serializers.py:160 build/serializers.py:840 +#: templates/js/translated/build.js:1319 +msgid "Build Output" +msgstr "" + +#: build/serializers.py:172 +msgid "Build output does not match the parent build" +msgstr "" + +#: build/serializers.py:176 +msgid "Output part does not match BuildOrder part" +msgstr "" + +#: build/serializers.py:180 +msgid "This build output has already been completed" +msgstr "" + +#: build/serializers.py:191 +msgid "This build output is not fully allocated" +msgstr "" + +#: build/serializers.py:211 build/serializers.py:248 +msgid "Enter quantity for build output" +msgstr "" + +#: build/serializers.py:269 +msgid "Integer quantity required for trackable parts" +msgstr "" + +#: build/serializers.py:272 +msgid "Integer quantity required, as the bill of materials contains trackable parts" +msgstr "" + +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 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:288 +msgid "Enter serial numbers for build outputs" +msgstr "" + +#: build/serializers.py:301 +msgid "Auto Allocate Serial Numbers" +msgstr "" + +#: build/serializers.py:302 +msgid "Automatically allocate required items with matching serial numbers" +msgstr "" + +#: build/serializers.py:337 stock/api.py:978 +msgid "The following serial numbers already exist or are invalid" +msgstr "" + +#: build/serializers.py:388 build/serializers.py:450 build/serializers.py:539 +msgid "A list of build outputs must be provided" +msgstr "" + +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 +#: stock/templates/stock/item_base.html:394 +#: templates/js/translated/barcode.js:547 +#: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 +#: templates/js/translated/build.js:2370 +#: templates/js/translated/purchase_order.js:1178 +#: templates/js/translated/purchase_order.js:1268 +#: templates/js/translated/sales_order.js:1511 +#: templates/js/translated/sales_order.js:1619 +#: templates/js/translated/sales_order.js:1627 +#: templates/js/translated/sales_order.js:1706 +#: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 +msgid "Location" +msgstr "" + +#: build/serializers.py:427 +msgid "Stock location for scrapped outputs" +msgstr "" + +#: build/serializers.py:433 +msgid "Discard Allocations" +msgstr "" + +#: build/serializers.py:434 +msgid "Discard any stock allocations for scrapped outputs" +msgstr "" + +#: build/serializers.py:439 +msgid "Reason for scrapping build output(s)" +msgstr "" + +#: build/serializers.py:499 +msgid "Location for completed build outputs" +msgstr "" + +#: build/serializers.py:505 build/templates/build/build_base.html:151 +#: build/templates/build/detail.html:62 order/models.py:910 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 +#: stock/templates/stock/item_base.html:427 +#: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 +#: templates/js/translated/purchase_order.js:1308 +#: templates/js/translated/purchase_order.js:1723 +#: templates/js/translated/return_order.js:331 +#: templates/js/translated/sales_order.js:819 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 +msgid "Status" +msgstr "" + +#: build/serializers.py:511 +msgid "Accept Incomplete Allocation" +msgstr "" + +#: build/serializers.py:512 +msgid "Complete outputs if stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:592 +msgid "Remove Allocated Stock" +msgstr "" + +#: build/serializers.py:593 +msgid "Subtract any stock which has already been allocated to this build" +msgstr "" + +#: build/serializers.py:599 +msgid "Remove Incomplete Outputs" +msgstr "" + +#: build/serializers.py:600 +msgid "Delete any build outputs which have not been completed" +msgstr "" + +#: build/serializers.py:627 +msgid "Not permitted" +msgstr "" + +#: build/serializers.py:628 +msgid "Accept as consumed by this build order" +msgstr "" + +#: build/serializers.py:629 +msgid "Deallocate before completing this build order" +msgstr "" + +#: build/serializers.py:651 +msgid "Overallocated Stock" +msgstr "" + +#: build/serializers.py:653 +msgid "How do you want to handle extra stock items assigned to the build order" +msgstr "" + +#: build/serializers.py:663 +msgid "Some stock items have been overallocated" +msgstr "" + +#: build/serializers.py:668 +msgid "Accept Unallocated" +msgstr "" + +#: build/serializers.py:669 +msgid "Accept that stock items have not been fully allocated to this build order" +msgstr "" + +#: build/serializers.py:679 templates/js/translated/build.js:315 +msgid "Required stock has not been fully allocated" +msgstr "" + +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 +msgid "Accept Incomplete" +msgstr "" + +#: build/serializers.py:685 +msgid "Accept that the required number of build outputs have not been completed" +msgstr "" + +#: build/serializers.py:695 templates/js/translated/build.js:319 +msgid "Required build quantity has not been completed" +msgstr "" + +#: build/serializers.py:704 templates/js/translated/build.js:303 +msgid "Build order has incomplete outputs" +msgstr "" + +#: build/serializers.py:734 +msgid "Build Line" +msgstr "" + +#: build/serializers.py:744 +msgid "Build output" +msgstr "" + +#: build/serializers.py:752 +msgid "Build output must point to the same build" +msgstr "" + +#: build/serializers.py:788 +msgid "Build Line Item" +msgstr "" + +#: build/serializers.py:802 +msgid "bom_item.part must point to the same part as the build order" +msgstr "" + +#: build/serializers.py:817 stock/serializers.py:1065 +msgid "Item must be in stock" +msgstr "" + +#: build/serializers.py:865 order/serializers.py:1226 +#, python-brace-format +msgid "Available quantity ({q}) exceeded" +msgstr "" + +#: build/serializers.py:871 +msgid "Build output must be specified for allocation of tracked parts" +msgstr "" + +#: build/serializers.py:878 +msgid "Build output cannot be specified for allocation of untracked parts" +msgstr "" + +#: build/serializers.py:902 order/serializers.py:1478 +msgid "Allocation items must be provided" +msgstr "" + +#: build/serializers.py:965 +msgid "Stock location where parts are to be sourced (leave blank to take from any location)" +msgstr "" + +#: build/serializers.py:973 +msgid "Exclude Location" +msgstr "" + +#: build/serializers.py:974 +msgid "Exclude stock items from this selected location" +msgstr "" + +#: build/serializers.py:979 +msgid "Interchangeable Stock" +msgstr "" + +#: build/serializers.py:980 +msgid "Stock items in multiple locations can be used interchangeably" +msgstr "" + +#: build/serializers.py:985 +msgid "Substitute Stock" +msgstr "" + +#: build/serializers.py:986 +msgid "Allow allocation of substitute parts" +msgstr "" + +#: build/serializers.py:991 +msgid "Optional Items" +msgstr "" + +#: build/serializers.py:992 +msgid "Allocate optional BOM items to build order" +msgstr "" + +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 +#: stock/api.py:745 +msgid "BOM Item" +msgstr "" + +#: build/serializers.py:1106 templates/js/translated/index.js:130 +msgid "Allocated Stock" +msgstr "" + +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 +#: templates/js/translated/table_filters.js:170 +msgid "On Order" +msgstr "" + +#: build/serializers.py:1116 part/serializers.py:1480 +#: templates/js/translated/build.js:2618 +#: templates/js/translated/table_filters.js:360 +msgid "In Production" +msgstr "" + +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 +#: part/templates/part/part_base.html:192 +#: templates/js/translated/sales_order.js:1893 +msgid "Available Stock" +msgstr "" + +#: build/tasks.py:171 +msgid "Stock required for build order" +msgstr "" + +#: build/tasks.py:188 +msgid "Overdue Build Order" +msgstr "" + +#: build/tasks.py:193 +#, 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:285 +#: order/models.py:1282 order/templates/order/order_base.html:186 +#: order/templates/order/return_order_base.html:164 +#: order/templates/order/sales_order_base.html:192 +#: report/templates/report/inventree_build_order_base.html:125 +#: templates/js/translated/build.js:2237 templates/js/translated/part.js:1830 +#: templates/js/translated/purchase_order.js:1740 +#: templates/js/translated/purchase_order.js:2148 +#: templates/js/translated/return_order.js:347 +#: templates/js/translated/return_order.js:751 +#: templates/js/translated/sales_order.js:835 +#: templates/js/translated/sales_order.js:1867 +msgid "Target Date" +msgstr "" + +#: build/templates/build/build_base.html:165 +#, python-format +msgid "This build was due on %(target)s" +msgstr "" + +#: build/templates/build/build_base.html:165 +#: build/templates/build/build_base.html:222 +#: order/templates/order/order_base.html:122 +#: order/templates/order/return_order_base.html:117 +#: order/templates/order/sales_order_base.html:122 +#: templates/js/translated/table_filters.js:98 +#: templates/js/translated/table_filters.js: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:1457 order/models.py:1524 +#: order/models.py:1638 order/models.py:1790 +#: order/templates/order/sales_order_base.html:9 +#: order/templates/order/sales_order_base.html:28 +#: report/templates/report/inventree_build_order_base.html:135 +#: report/templates/report/inventree_so_report_base.html:14 +#: stock/templates/stock/item_base.html:369 +#: templates/email/overdue_sales_order.html:15 +#: templates/js/translated/pricing.js:929 +#: templates/js/translated/sales_order.js:769 +#: templates/js/translated/sales_order.js:992 +#: templates/js/translated/stock.js:2924 +msgid "Sales Order" +msgstr "" + +#: build/templates/build/build_base.html:197 +#: build/templates/build/detail.html:115 +#: report/templates/report/inventree_build_order_base.html:152 +#: templates/js/translated/table_filters.js:24 +msgid "Issued By" +msgstr "" + +#: build/templates/build/build_base.html:211 +#: build/templates/build/detail.html:94 templates/js/translated/build.js:2154 +msgid "Priority" +msgstr "" + +#: build/templates/build/build_base.html:273 +msgid "Delete Build Order" +msgstr "" + +#: build/templates/build/build_base.html:283 +msgid "Build Order QR Code" +msgstr "" + +#: build/templates/build/build_base.html:295 +msgid "Link Barcode to Build Order" +msgstr "" + +#: build/templates/build/detail.html:15 +msgid "Build Details" +msgstr "" + +#: build/templates/build/detail.html:38 +msgid "Stock Source" +msgstr "" + +#: build/templates/build/detail.html:43 +msgid "Stock can be taken from any available location." +msgstr "" + +#: build/templates/build/detail.html:49 order/models.py:1418 +#: templates/js/translated/purchase_order.js:2190 +msgid "Destination" +msgstr "" + +#: build/templates/build/detail.html:56 +msgid "Destination location not specified" +msgstr "" + +#: build/templates/build/detail.html:73 +msgid "Allocated Parts" +msgstr "" + +#: build/templates/build/detail.html:80 stock/admin.py:163 +#: stock/templates/stock/item_base.html:162 +#: templates/js/translated/build.js:1377 +#: templates/js/translated/model_renderers.js:235 +#: templates/js/translated/purchase_order.js:1274 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: 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:186 +#: templates/js/translated/build.js:2197 +msgid "Created" +msgstr "" + +#: build/templates/build/detail.html:144 +msgid "No target date set" +msgstr "" + +#: build/templates/build/detail.html:149 +#: order/templates/order/sales_order_base.html:202 +#: templates/js/translated/table_filters.js: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:434 +msgid "Allocation Complete" +msgstr "" + +#: build/templates/build/detail.html:435 +msgid "All lines have been fully allocated" +msgstr "" + +#: build/templates/build/index.html:18 part/templates/part/detail.html:319 +msgid "New Build Order" +msgstr "" + +#: build/templates/build/sidebar.html:5 +msgid "Build Order Details" +msgstr "" + +#: build/templates/build/sidebar.html:10 +msgid "Incomplete Outputs" +msgstr "" + +#: common/files.py:63 +#, python-brace-format +msgid "Unsupported file format: {fmt}" +msgstr "" + +#: common/files.py:65 +msgid "Error reading file (invalid encoding)" +msgstr "" + +#: common/files.py:70 +msgid "Error reading file (invalid format)" +msgstr "" + +#: common/files.py:72 +msgid "Error reading file (incorrect dimension)" +msgstr "" + +#: common/files.py:74 +msgid "Error reading file (data could be corrupted)" +msgstr "" + +#: common/forms.py:12 +msgid "File" +msgstr "" + +#: common/forms.py:12 +msgid "Select file to upload" +msgstr "" + +#: common/forms.py:25 +msgid "{name.title()} File" +msgstr "" + +#: common/forms.py:26 +#, python-brace-format +msgid "Select {name} file to upload" +msgstr "" + +#: common/models.py:71 +msgid "Updated" +msgstr "" + +#: common/models.py:72 +msgid "Timestamp of last update" +msgstr "" + +#: common/models.py:105 +msgid "Site URL is locked by configuration" +msgstr "" + +#: common/models.py:130 +msgid "Unique project code" +msgstr "" + +#: common/models.py:137 +msgid "Project description" +msgstr "" + +#: common/models.py:146 +msgid "User or group responsible for this project" +msgstr "" + +#: common/models.py:744 +msgid "Settings key (must be unique - case insensitive)" +msgstr "" + +#: common/models.py:748 +msgid "Settings value" +msgstr "" + +#: common/models.py:800 +msgid "Chosen value is not a valid option" +msgstr "" + +#: common/models.py:816 +msgid "Value must be a boolean value" +msgstr "" + +#: common/models.py:824 +msgid "Value must be an integer value" +msgstr "" + +#: common/models.py:861 +msgid "Key string must be unique" +msgstr "" + +#: common/models.py:1093 +msgid "No group" +msgstr "" + +#: common/models.py:1136 +msgid "An empty domain is not allowed." +msgstr "" + +#: common/models.py:1138 +#, python-brace-format +msgid "Invalid domain name: {domain}" +msgstr "" + +#: common/models.py:1150 +msgid "No plugin" +msgstr "" + +#: common/models.py:1236 +msgid "Restart required" +msgstr "" + +#: common/models.py:1238 +msgid "A setting has been changed which requires a server restart" +msgstr "" + +#: common/models.py:1245 +msgid "Pending migrations" +msgstr "" + +#: common/models.py:1246 +msgid "Number of pending database migrations" +msgstr "" + +#: common/models.py:1251 +msgid "Server Instance Name" +msgstr "" + +#: common/models.py:1253 +msgid "String descriptor for the server instance" +msgstr "" + +#: common/models.py:1257 +msgid "Use instance name" +msgstr "" + +#: common/models.py:1258 +msgid "Use the instance name in the title-bar" +msgstr "" + +#: common/models.py:1263 +msgid "Restrict showing `about`" +msgstr "" + +#: common/models.py:1264 +msgid "Show the `about` modal only to superusers" +msgstr "" + +#: common/models.py:1269 company/models.py:107 company/models.py:108 +msgid "Company name" +msgstr "" + +#: common/models.py:1270 +msgid "Internal company name" +msgstr "" + +#: common/models.py:1274 +msgid "Base URL" +msgstr "" + +#: common/models.py:1275 +msgid "Base URL for server instance" +msgstr "" + +#: common/models.py:1281 +msgid "Default Currency" +msgstr "" + +#: common/models.py:1282 +msgid "Select base currency for pricing calculations" +msgstr "" + +#: common/models.py:1288 +msgid "Currency Update Interval" +msgstr "" + +#: common/models.py:1290 +msgid "How often to update exchange rates (set to zero to disable)" +msgstr "" + +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 +msgid "days" +msgstr "" + +#: common/models.py:1297 +msgid "Currency Update Plugin" +msgstr "" + +#: common/models.py:1298 +msgid "Currency update plugin to use" +msgstr "" + +#: common/models.py:1303 +msgid "Download from URL" +msgstr "" + +#: common/models.py:1305 +msgid "Allow download of remote images and files from external URL" +msgstr "" + +#: common/models.py:1311 +msgid "Download Size Limit" +msgstr "" + +#: common/models.py:1312 +msgid "Maximum allowable download size for remote image" +msgstr "" + +#: common/models.py:1318 +msgid "User-agent used to download from URL" +msgstr "" + +#: common/models.py:1320 +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:1325 +msgid "Strict URL Validation" +msgstr "" + +#: common/models.py:1326 +msgid "Require schema specification when validating URLs" +msgstr "" + +#: common/models.py:1331 +msgid "Require confirm" +msgstr "" + +#: common/models.py:1332 +msgid "Require explicit user confirmation for certain action." +msgstr "" + +#: common/models.py:1337 +msgid "Tree Depth" +msgstr "" + +#: common/models.py:1339 +msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." +msgstr "" + +#: common/models.py:1345 +msgid "Update Check Interval" +msgstr "" + +#: common/models.py:1346 +msgid "How often to check for updates (set to zero to disable)" +msgstr "" + +#: common/models.py:1352 +msgid "Automatic Backup" +msgstr "" + +#: common/models.py:1353 +msgid "Enable automatic backup of database and media files" +msgstr "" + +#: common/models.py:1358 +msgid "Auto Backup Interval" +msgstr "" + +#: common/models.py:1359 +msgid "Specify number of days between automated backup events" +msgstr "" + +#: common/models.py:1365 +msgid "Task Deletion Interval" +msgstr "" + +#: common/models.py:1367 +msgid "Background task results will be deleted after specified number of days" +msgstr "" + +#: common/models.py:1374 +msgid "Error Log Deletion Interval" +msgstr "" + +#: common/models.py:1376 +msgid "Error logs will be deleted after specified number of days" +msgstr "" + +#: common/models.py:1383 +msgid "Notification Deletion Interval" +msgstr "" + +#: common/models.py:1385 +msgid "User notifications will be deleted after specified number of days" +msgstr "" + +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 +msgid "Barcode Support" +msgstr "" + +#: common/models.py:1393 +msgid "Enable barcode scanner support in the web interface" +msgstr "" + +#: common/models.py:1398 +msgid "Barcode Input Delay" +msgstr "" + +#: common/models.py:1399 +msgid "Barcode input processing delay time" +msgstr "" + +#: common/models.py:1405 +msgid "Barcode Webcam Support" +msgstr "" + +#: common/models.py:1406 +msgid "Allow barcode scanning via webcam in browser" +msgstr "" + +#: common/models.py:1411 +msgid "Part Revisions" +msgstr "" + +#: common/models.py:1412 +msgid "Enable revision field for Part" +msgstr "" + +#: common/models.py:1417 +msgid "IPN Regex" +msgstr "" + +#: common/models.py:1418 +msgid "Regular expression pattern for matching Part IPN" +msgstr "" + +#: common/models.py:1421 +msgid "Allow Duplicate IPN" +msgstr "" + +#: common/models.py:1422 +msgid "Allow multiple parts to share the same IPN" +msgstr "" + +#: common/models.py:1427 +msgid "Allow Editing IPN" +msgstr "" + +#: common/models.py:1428 +msgid "Allow changing the IPN value while editing a part" +msgstr "" + +#: common/models.py:1433 +msgid "Copy Part BOM Data" +msgstr "" + +#: common/models.py:1434 +msgid "Copy BOM data by default when duplicating a part" +msgstr "" + +#: common/models.py:1439 +msgid "Copy Part Parameter Data" +msgstr "" + +#: common/models.py:1440 +msgid "Copy parameter data by default when duplicating a part" +msgstr "" + +#: common/models.py:1445 +msgid "Copy Part Test Data" +msgstr "" + +#: common/models.py:1446 +msgid "Copy test data by default when duplicating a part" +msgstr "" + +#: common/models.py:1451 +msgid "Copy Category Parameter Templates" +msgstr "" + +#: common/models.py:1452 +msgid "Copy category parameter templates when creating a part" +msgstr "" + +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 +#: templates/js/translated/table_filters.js:139 +#: templates/js/translated/table_filters.js:767 +msgid "Template" +msgstr "" + +#: common/models.py:1458 +msgid "Parts are templates by default" +msgstr "" + +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1464 +msgid "Parts can be assembled from other components by default" +msgstr "" + +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 +#: templates/js/translated/table_filters.js:729 +msgid "Component" +msgstr "" + +#: common/models.py:1470 +msgid "Parts can be used as sub-components by default" +msgstr "" + +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 +msgid "Purchaseable" +msgstr "" + +#: common/models.py:1476 +msgid "Parts are purchaseable by default" +msgstr "" + +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 +#: templates/js/translated/table_filters.js:755 +msgid "Salable" +msgstr "" + +#: common/models.py:1482 +msgid "Parts are salable by default" +msgstr "" + +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 +#: 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:1488 +msgid "Parts are trackable by default" +msgstr "" + +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 +#: 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:1494 +msgid "Parts are virtual by default" +msgstr "" + +#: common/models.py:1499 +msgid "Show Import in Views" +msgstr "" + +#: common/models.py:1500 +msgid "Display the import wizard in some part views" +msgstr "" + +#: common/models.py:1505 +msgid "Show related parts" +msgstr "" + +#: common/models.py:1506 +msgid "Display related parts for a part" +msgstr "" + +#: common/models.py:1511 +msgid "Initial Stock Data" +msgstr "" + +#: common/models.py:1512 +msgid "Allow creation of initial stock when adding a new part" +msgstr "" + +#: common/models.py:1517 templates/js/translated/part.js:107 +msgid "Initial Supplier Data" +msgstr "" + +#: common/models.py:1519 +msgid "Allow creation of initial supplier data when adding a new part" +msgstr "" + +#: common/models.py:1525 +msgid "Part Name Display Format" +msgstr "" + +#: common/models.py:1526 +msgid "Format to display the part name" +msgstr "" + +#: common/models.py:1532 +msgid "Part Category Default Icon" +msgstr "" + +#: common/models.py:1533 +msgid "Part category default icon (empty means no icon)" +msgstr "" + +#: common/models.py:1537 +msgid "Enforce Parameter Units" +msgstr "" + +#: common/models.py:1539 +msgid "If units are provided, parameter values must match the specified units" +msgstr "" + +#: common/models.py:1545 +msgid "Minimum Pricing Decimal Places" +msgstr "" + +#: common/models.py:1547 +msgid "Minimum number of decimal places to display when rendering pricing data" +msgstr "" + +#: common/models.py:1553 +msgid "Maximum Pricing Decimal Places" +msgstr "" + +#: common/models.py:1555 +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:202 +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 behaviour 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 "Build Order Reference Pattern" +msgstr "" + +#: common/models.py:1764 +msgid "Required pattern for generating Build Order reference field" +msgstr "" + +#: common/models.py:1770 +msgid "Enable Return Orders" +msgstr "" + +#: common/models.py:1771 +msgid "Enable return order functionality in the user interface" +msgstr "" + +#: common/models.py:1776 +msgid "Return Order Reference Pattern" +msgstr "" + +#: common/models.py:1778 +msgid "Required pattern for generating Return Order reference field" +msgstr "" + +#: common/models.py:1784 +msgid "Edit Completed Return Orders" +msgstr "" + +#: common/models.py:1786 +msgid "Allow editing of return orders after they have been completed" +msgstr "" + +#: common/models.py:1792 +msgid "Sales Order Reference Pattern" +msgstr "" + +#: common/models.py:1794 +msgid "Required pattern for generating Sales Order reference field" +msgstr "" + +#: common/models.py:1800 +msgid "Sales Order Default Shipment" +msgstr "" + +#: common/models.py:1801 +msgid "Enable creation of default shipment with sales orders" +msgstr "" + +#: common/models.py:1806 +msgid "Edit Completed Sales Orders" +msgstr "" + +#: common/models.py:1808 +msgid "Allow editing of sales orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1814 +msgid "Purchase Order Reference Pattern" +msgstr "" + +#: common/models.py:1816 +msgid "Required pattern for generating Purchase Order reference field" +msgstr "" + +#: common/models.py:1822 +msgid "Edit Completed Purchase Orders" +msgstr "" + +#: common/models.py:1824 +msgid "Allow editing of purchase orders after they have been shipped or completed" +msgstr "" + +#: common/models.py:1830 +msgid "Auto Complete Purchase Orders" +msgstr "" + +#: common/models.py:1832 +msgid "Automatically mark purchase orders as complete when all line items are received" +msgstr "" + +#: common/models.py:1839 +msgid "Enable password forgot" +msgstr "" + +#: common/models.py:1840 +msgid "Enable password forgot function on the login pages" +msgstr "" + +#: common/models.py:1845 +msgid "Enable registration" +msgstr "" + +#: common/models.py:1846 +msgid "Enable self-registration for users on the login pages" +msgstr "" + +#: common/models.py:1851 +msgid "Enable SSO" +msgstr "" + +#: common/models.py:1852 +msgid "Enable SSO on the login pages" +msgstr "" + +#: common/models.py:1857 +msgid "Enable SSO registration" +msgstr "" + +#: common/models.py:1859 +msgid "Enable self-registration via SSO for users on the login pages" +msgstr "" + +#: common/models.py:1865 +msgid "Email required" +msgstr "" + +#: common/models.py:1866 +msgid "Require user to supply mail on signup" +msgstr "" + +#: common/models.py:1871 +msgid "Auto-fill SSO users" +msgstr "" + +#: common/models.py:1873 +msgid "Automatically fill out user-details from SSO account-data" +msgstr "" + +#: common/models.py:1879 +msgid "Mail twice" +msgstr "" + +#: common/models.py:1880 +msgid "On signup ask users twice for their mail" +msgstr "" + +#: common/models.py:1885 +msgid "Password twice" +msgstr "" + +#: common/models.py:1886 +msgid "On signup ask users twice for their password" +msgstr "" + +#: common/models.py:1891 +msgid "Allowed domains" +msgstr "" + +#: common/models.py:1893 +msgid "Restrict signup to certain domains (comma-separated, starting with @)" +msgstr "" + +#: common/models.py:1899 +msgid "Group on signup" +msgstr "" + +#: common/models.py:1900 +msgid "Group to which new users are assigned on registration" +msgstr "" + +#: common/models.py:1905 +msgid "Enforce MFA" +msgstr "" + +#: common/models.py:1906 +msgid "Users must use multifactor security." +msgstr "" + +#: common/models.py:1911 +msgid "Check plugins on startup" +msgstr "" + +#: common/models.py:1913 +msgid "Check that all plugins are installed on startup - enable in container environments" +msgstr "" + +#: common/models.py:1921 +msgid "Check for plugin updates" +msgstr "" + +#: common/models.py:1922 +msgid "Enable periodic checks for updates to installed plugins" +msgstr "" + +#: common/models.py:1928 +msgid "Enable URL integration" +msgstr "" + +#: common/models.py:1929 +msgid "Enable plugins to add URL routes" +msgstr "" + +#: common/models.py:1935 +msgid "Enable navigation integration" +msgstr "" + +#: common/models.py:1936 +msgid "Enable plugins to integrate into navigation" +msgstr "" + +#: common/models.py:1942 +msgid "Enable app integration" +msgstr "" + +#: common/models.py:1943 +msgid "Enable plugins to add apps" +msgstr "" + +#: common/models.py:1949 +msgid "Enable schedule integration" +msgstr "" + +#: common/models.py:1950 +msgid "Enable plugins to run scheduled tasks" +msgstr "" + +#: common/models.py:1956 +msgid "Enable event integration" +msgstr "" + +#: common/models.py:1957 +msgid "Enable plugins to respond to internal events" +msgstr "" + +#: common/models.py:1963 +msgid "Enable project codes" +msgstr "" + +#: common/models.py:1964 +msgid "Enable project codes for tracking projects" +msgstr "" + +#: common/models.py:1969 +msgid "Stocktake Functionality" +msgstr "" + +#: common/models.py:1971 +msgid "Enable stocktake functionality for recording stock levels and calculating stock value" +msgstr "" + +#: common/models.py:1977 +msgid "Exclude External Locations" +msgstr "" + +#: common/models.py:1979 +msgid "Exclude stock items in external locations from stocktake calculations" +msgstr "" + +#: common/models.py:1985 +msgid "Automatic Stocktake Period" +msgstr "" + +#: common/models.py:1987 +msgid "Number of days between automatic stocktake recording (set to zero to disable)" +msgstr "" + +#: common/models.py:1993 +msgid "Report Deletion Interval" +msgstr "" + +#: common/models.py:1995 +msgid "Stocktake reports will be deleted after specified number of days" +msgstr "" + +#: common/models.py:2002 +msgid "Display Users full names" +msgstr "" + +#: common/models.py:2003 +msgid "Display Users full names instead of usernames" +msgstr "" + +#: common/models.py:2008 +msgid "Block Until Tests Pass" +msgstr "" + +#: common/models.py:2010 +msgid "Prevent build outputs from being completed until all required tests pass" +msgstr "" + +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2029 common/models.py:2429 +msgid "Settings key (must be unique - case insensitive" +msgstr "" + +#: common/models.py:2070 +msgid "Hide inactive parts" +msgstr "" + +#: common/models.py:2072 +msgid "Hide inactive parts in results displayed on the homepage" +msgstr "" + +#: common/models.py:2078 +msgid "Show subscribed parts" +msgstr "" + +#: common/models.py:2079 +msgid "Show subscribed parts on the homepage" +msgstr "" + +#: common/models.py:2084 +msgid "Show subscribed categories" +msgstr "" + +#: common/models.py:2085 +msgid "Show subscribed part categories on the homepage" +msgstr "" + +#: common/models.py:2090 +msgid "Show latest parts" +msgstr "" + +#: common/models.py:2091 +msgid "Show latest parts on the homepage" +msgstr "" + +#: common/models.py:2096 +msgid "Show unvalidated BOMs" +msgstr "" + +#: common/models.py:2097 +msgid "Show BOMs that await validation on the homepage" +msgstr "" + +#: common/models.py:2102 +msgid "Show recent stock changes" +msgstr "" + +#: common/models.py:2103 +msgid "Show recently changed stock items on the homepage" +msgstr "" + +#: common/models.py:2108 +msgid "Show low stock" +msgstr "" + +#: common/models.py:2109 +msgid "Show low stock items on the homepage" +msgstr "" + +#: common/models.py:2114 +msgid "Show depleted stock" +msgstr "" + +#: common/models.py:2115 +msgid "Show depleted stock items on the homepage" +msgstr "" + +#: common/models.py:2120 +msgid "Show needed stock" +msgstr "" + +#: common/models.py:2121 +msgid "Show stock items needed for builds on the homepage" +msgstr "" + +#: common/models.py:2126 +msgid "Show expired stock" +msgstr "" + +#: common/models.py:2127 +msgid "Show expired stock items on the homepage" +msgstr "" + +#: common/models.py:2132 +msgid "Show stale stock" +msgstr "" + +#: common/models.py:2133 +msgid "Show stale stock items on the homepage" +msgstr "" + +#: common/models.py:2138 +msgid "Show pending builds" +msgstr "" + +#: common/models.py:2139 +msgid "Show pending builds on the homepage" +msgstr "" + +#: common/models.py:2144 +msgid "Show overdue builds" +msgstr "" + +#: common/models.py:2145 +msgid "Show overdue builds on the homepage" +msgstr "" + +#: common/models.py:2150 +msgid "Show outstanding POs" +msgstr "" + +#: common/models.py:2151 +msgid "Show outstanding POs on the homepage" +msgstr "" + +#: common/models.py:2156 +msgid "Show overdue POs" +msgstr "" + +#: common/models.py:2157 +msgid "Show overdue POs on the homepage" +msgstr "" + +#: common/models.py:2162 +msgid "Show outstanding SOs" +msgstr "" + +#: common/models.py:2163 +msgid "Show outstanding SOs on the homepage" +msgstr "" + +#: common/models.py:2168 +msgid "Show overdue SOs" +msgstr "" + +#: common/models.py:2169 +msgid "Show overdue SOs on the homepage" +msgstr "" + +#: common/models.py:2174 +msgid "Show pending SO shipments" +msgstr "" + +#: common/models.py:2175 +msgid "Show pending SO shipments on the homepage" +msgstr "" + +#: common/models.py:2180 +msgid "Show News" +msgstr "" + +#: common/models.py:2181 +msgid "Show news on the homepage" +msgstr "" + +#: common/models.py:2186 +msgid "Inline label display" +msgstr "" + +#: common/models.py:2188 +msgid "Display PDF labels in the browser, instead of downloading as a file" +msgstr "" + +#: common/models.py:2194 +msgid "Default label printer" +msgstr "" + +#: common/models.py:2196 +msgid "Configure which label printer should be selected by default" +msgstr "" + +#: common/models.py:2202 +msgid "Inline report display" +msgstr "" + +#: common/models.py:2204 +msgid "Display PDF reports in the browser, instead of downloading as a file" +msgstr "" + +#: common/models.py:2210 +msgid "Search Parts" +msgstr "" + +#: common/models.py:2211 +msgid "Display parts in search preview window" +msgstr "" + +#: common/models.py:2216 +msgid "Search Supplier Parts" +msgstr "" + +#: common/models.py:2217 +msgid "Display supplier parts in search preview window" +msgstr "" + +#: common/models.py:2222 +msgid "Search Manufacturer Parts" +msgstr "" + +#: common/models.py:2223 +msgid "Display manufacturer parts in search preview window" +msgstr "" + +#: common/models.py:2228 +msgid "Hide Inactive Parts" +msgstr "" + +#: common/models.py:2229 +msgid "Excluded inactive parts from search preview window" +msgstr "" + +#: common/models.py:2234 +msgid "Search Categories" +msgstr "" + +#: common/models.py:2235 +msgid "Display part categories in search preview window" +msgstr "" + +#: common/models.py:2240 +msgid "Search Stock" +msgstr "" + +#: common/models.py:2241 +msgid "Display stock items in search preview window" +msgstr "" + +#: common/models.py:2246 +msgid "Hide Unavailable Stock Items" +msgstr "" + +#: common/models.py:2248 +msgid "Exclude stock items which are not available from the search preview window" +msgstr "" + +#: common/models.py:2254 +msgid "Search Locations" +msgstr "" + +#: common/models.py:2255 +msgid "Display stock locations in search preview window" +msgstr "" + +#: common/models.py:2260 +msgid "Search Companies" +msgstr "" + +#: common/models.py:2261 +msgid "Display companies in search preview window" +msgstr "" + +#: common/models.py:2266 +msgid "Search Build Orders" +msgstr "" + +#: common/models.py:2267 +msgid "Display build orders in search preview window" +msgstr "" + +#: common/models.py:2272 +msgid "Search Purchase Orders" +msgstr "" + +#: common/models.py:2273 +msgid "Display purchase orders in search preview window" +msgstr "" + +#: common/models.py:2278 +msgid "Exclude Inactive Purchase Orders" +msgstr "" + +#: common/models.py:2280 +msgid "Exclude inactive purchase orders from search preview window" +msgstr "" + +#: common/models.py:2286 +msgid "Search Sales Orders" +msgstr "" + +#: common/models.py:2287 +msgid "Display sales orders in search preview window" +msgstr "" + +#: common/models.py:2292 +msgid "Exclude Inactive Sales Orders" +msgstr "" + +#: common/models.py:2294 +msgid "Exclude inactive sales orders from search preview window" +msgstr "" + +#: common/models.py:2300 +msgid "Search Return Orders" +msgstr "" + +#: common/models.py:2301 +msgid "Display return orders in search preview window" +msgstr "" + +#: common/models.py:2306 +msgid "Exclude Inactive Return Orders" +msgstr "" + +#: common/models.py:2308 +msgid "Exclude inactive return orders from search preview window" +msgstr "" + +#: common/models.py:2314 +msgid "Search Preview Results" +msgstr "" + +#: common/models.py:2316 +msgid "Number of results to show in each section of the search preview window" +msgstr "" + +#: common/models.py:2322 +msgid "Regex Search" +msgstr "" + +#: common/models.py:2323 +msgid "Enable regular expressions in search queries" +msgstr "" + +#: common/models.py:2328 +msgid "Whole Word Search" +msgstr "" + +#: common/models.py:2329 +msgid "Search queries return results for whole word matches" +msgstr "" + +#: common/models.py:2334 +msgid "Show Quantity in Forms" +msgstr "" + +#: common/models.py:2335 +msgid "Display available part quantity in some forms" +msgstr "" + +#: common/models.py:2340 +msgid "Escape Key Closes Forms" +msgstr "" + +#: common/models.py:2341 +msgid "Use the escape key to close modal forms" +msgstr "" + +#: common/models.py:2346 +msgid "Fixed Navbar" +msgstr "" + +#: common/models.py:2347 +msgid "The navbar position is fixed to the top of the screen" +msgstr "" + +#: common/models.py:2352 +msgid "Date Format" +msgstr "" + +#: common/models.py:2353 +msgid "Preferred format for displaying dates" +msgstr "" + +#: common/models.py:2366 part/templates/part/detail.html:41 +msgid "Part Scheduling" +msgstr "" + +#: common/models.py:2367 +msgid "Display part scheduling information" +msgstr "" + +#: common/models.py:2372 part/templates/part/detail.html:62 +msgid "Part Stocktake" +msgstr "" + +#: common/models.py:2374 +msgid "Display part stocktake information (if stocktake functionality is enabled)" +msgstr "" + +#: common/models.py:2380 +msgid "Table String Length" +msgstr "" + +#: common/models.py:2382 +msgid "Maximum length limit for strings displayed in table views" +msgstr "" + +#: common/models.py:2388 +msgid "Default part label template" +msgstr "" + +#: common/models.py:2389 +msgid "The part label template to be automatically selected" +msgstr "" + +#: common/models.py:2394 +msgid "Default stock item template" +msgstr "" + +#: common/models.py:2396 +msgid "The stock item label template to be automatically selected" +msgstr "" + +#: common/models.py:2402 +msgid "Default stock location label template" +msgstr "" + +#: common/models.py:2404 +msgid "The stock location label template to be automatically selected" +msgstr "" + +#: common/models.py:2410 +msgid "Receive error reports" +msgstr "" + +#: common/models.py:2411 +msgid "Receive notifications for system errors" +msgstr "" + +#: common/models.py:2416 +msgid "Last used printing machines" +msgstr "" + +#: common/models.py:2417 +msgid "Save the last used printing machines for a user" +msgstr "" + +#: common/models.py:2460 +msgid "Price break quantity" +msgstr "" + +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 +#: order/models.py:1321 order/models.py:2226 +#: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 +#: templates/js/translated/pricing.js:621 +#: templates/js/translated/return_order.js:741 +msgid "Price" +msgstr "" + +#: common/models.py:2468 +msgid "Unit price at specified quantity" +msgstr "" + +#: common/models.py:2639 common/models.py:2824 +msgid "Endpoint" +msgstr "" + +#: common/models.py:2640 +msgid "Endpoint at which this webhook is received" +msgstr "" + +#: common/models.py:2650 +msgid "Name for this webhook" +msgstr "" + +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 +#: part/models.py:1044 plugin/models.py:56 +#: 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 users/models.py:169 +msgid "Active" +msgstr "" + +#: common/models.py:2654 +msgid "Is this webhook active" +msgstr "" + +#: common/models.py:2670 users/models.py:148 +msgid "Token" +msgstr "" + +#: common/models.py:2671 +msgid "Token for access" +msgstr "" + +#: common/models.py:2679 +msgid "Secret" +msgstr "" + +#: common/models.py:2680 +msgid "Shared secret for HMAC" +msgstr "" + +#: common/models.py:2788 +msgid "Message ID" +msgstr "" + +#: common/models.py:2789 +msgid "Unique identifier for this message" +msgstr "" + +#: common/models.py:2797 +msgid "Host" +msgstr "" + +#: common/models.py:2798 +msgid "Host from which this message was received" +msgstr "" + +#: common/models.py:2806 +msgid "Header" +msgstr "" + +#: common/models.py:2807 +msgid "Header of this message" +msgstr "" + +#: common/models.py:2814 +msgid "Body" +msgstr "" + +#: common/models.py:2815 +msgid "Body of this message" +msgstr "" + +#: common/models.py:2825 +msgid "Endpoint on which this message was received" +msgstr "" + +#: common/models.py:2830 +msgid "Worked on" +msgstr "" + +#: common/models.py:2831 +msgid "Was the work on this message finished?" +msgstr "" + +#: common/models.py:2957 +msgid "Id" +msgstr "" + +#: common/models.py:2959 templates/js/translated/company.js:955 +#: templates/js/translated/news.js:44 +msgid "Title" +msgstr "" + +#: common/models.py:2963 templates/js/translated/news.js:60 +msgid "Published" +msgstr "" + +#: common/models.py:2965 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:2967 templates/js/translated/news.js:52 +msgid "Summary" +msgstr "" + +#: common/models.py:2970 +msgid "Read" +msgstr "" + +#: common/models.py:2970 +msgid "Was this news item read?" +msgstr "" + +#: common/models.py:2987 company/models.py:155 part/models.py:928 +#: report/templates/report/inventree_bill_of_materials_report.html:126 +#: report/templates/report/inventree_bill_of_materials_report.html:148 +#: report/templates/report/inventree_return_order_report_base.html:35 +#: stock/templates/stock/item_base.html:133 templates/503.html:31 +#: templates/hover_image.html:7 templates/hover_image.html:9 +#: templates/modals.html:6 +msgid "Image" +msgstr "" + +#: common/models.py:2987 +msgid "Image file" +msgstr "" + +#: common/models.py:3029 +msgid "Unit name must be a valid identifier" +msgstr "" + +#: common/models.py:3048 +msgid "Unit name" +msgstr "" + +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 +msgid "Symbol" +msgstr "" + +#: common/models.py:3056 +msgid "Optional unit symbol" +msgstr "" + +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 +msgid "Definition" +msgstr "" + +#: common/models.py:3064 +msgid "Unit definition" +msgstr "" + +#: common/notifications.py:314 +#, python-brace-format +msgid "New {verbose_name}" +msgstr "" + +#: common/notifications.py:316 +msgid "A new order has been created and assigned to you" +msgstr "" + +#: common/notifications.py:322 +#, python-brace-format +msgid "{verbose_name} canceled" +msgstr "" + +#: common/notifications.py:324 +msgid "A order that is assigned to you was canceled" +msgstr "" + +#: common/notifications.py:330 common/notifications.py:337 +msgid "Items Received" +msgstr "" + +#: common/notifications.py:332 +msgid "Items have been received against a purchase order" +msgstr "" + +#: common/notifications.py:339 +msgid "Items have been received against a return order" +msgstr "" + +#: common/notifications.py:457 +msgid "Error raised by plugin" +msgstr "" + +#: common/serializers.py:333 +msgid "Is Running" +msgstr "" + +#: common/serializers.py:339 +msgid "Pending Tasks" +msgstr "" + +#: common/serializers.py:345 +msgid "Scheduled Tasks" +msgstr "" + +#: common/serializers.py:351 +msgid "Failed Tasks" +msgstr "" + +#: common/serializers.py:366 +msgid "Task ID" +msgstr "" + +#: common/serializers.py:366 +msgid "Unique task ID" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock" +msgstr "" + +#: common/serializers.py:368 +msgid "Lock time" +msgstr "" + +#: common/serializers.py:370 +msgid "Task name" +msgstr "" + +#: common/serializers.py:372 +msgid "Function" +msgstr "" + +#: common/serializers.py:372 +msgid "Function name" +msgstr "" + +#: common/serializers.py:374 +msgid "Arguments" +msgstr "" + +#: common/serializers.py:374 +msgid "Task arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Keyword Arguments" +msgstr "" + +#: common/serializers.py:377 +msgid "Task keyword arguments" +msgstr "" + +#: common/views.py:84 order/templates/order/order_wizard/po_upload.html:51 +#: order/templates/order/purchase_order_detail.html:24 order/views.py:118 +#: part/templates/part/import_wizard/part_upload.html:58 part/views.py:109 +#: templates/patterns/wizard/upload.html:37 +msgid "Upload File" +msgstr "" + +#: common/views.py:84 order/templates/order/order_wizard/match_fields.html:52 +#: order/views.py:119 +#: part/templates/part/import_wizard/ajax_match_fields.html:45 +#: part/templates/part/import_wizard/match_fields.html:52 part/views.py:110 +#: templates/patterns/wizard/match_fields.html:51 +msgid "Match Fields" +msgstr "" + +#: common/views.py:84 +msgid "Match Items" +msgstr "" + +#: common/views.py:401 +msgid "Fields matching failed" +msgstr "" + +#: common/views.py:464 +msgid "Parts imported" +msgstr "" + +#: common/views.py:494 order/templates/order/order_wizard/match_fields.html:27 +#: order/templates/order/order_wizard/match_parts.html:19 +#: order/templates/order/order_wizard/po_upload.html:49 +#: part/templates/part/import_wizard/match_fields.html:27 +#: part/templates/part/import_wizard/match_references.html:19 +#: part/templates/part/import_wizard/part_upload.html:56 +#: templates/patterns/wizard/match_fields.html:26 +#: templates/patterns/wizard/upload.html:35 +msgid "Previous Step" +msgstr "" + +#: company/models.py:113 +msgid "Company description" +msgstr "" + +#: company/models.py:114 +msgid "Description of the company" +msgstr "" + +#: company/models.py:119 company/templates/company/company_base.html:100 +#: templates/InvenTree/settings/plugin_settings.html:54 +#: templates/js/translated/company.js:522 +msgid "Website" +msgstr "" + +#: company/models.py:119 +msgid "Company website URL" +msgstr "" + +#: company/models.py:124 +msgid "Phone number" +msgstr "" + +#: company/models.py:126 +msgid "Contact phone number" +msgstr "" + +#: company/models.py:133 +msgid "Contact email address" +msgstr "" + +#: company/models.py:138 company/templates/company/company_base.html:139 +#: order/models.py:319 order/templates/order/order_base.html:203 +#: order/templates/order/return_order_base.html:174 +#: order/templates/order/sales_order_base.html:214 +msgid "Contact" +msgstr "" + +#: company/models.py:140 +msgid "Point of contact" +msgstr "" + +#: company/models.py:146 +msgid "Link to external company information" +msgstr "" + +#: company/models.py:160 +msgid "is customer" +msgstr "" + +#: company/models.py:161 +msgid "Do you sell items to this company?" +msgstr "" + +#: company/models.py:166 +msgid "is supplier" +msgstr "" + +#: company/models.py:167 +msgid "Do you purchase items from this company?" +msgstr "" + +#: company/models.py:172 +msgid "is manufacturer" +msgstr "" + +#: company/models.py:173 +msgid "Does this company manufacture parts?" +msgstr "" + +#: company/models.py:181 +msgid "Default currency used for this company" +msgstr "" + +#: company/models.py:268 company/models.py:377 +#: company/templates/company/company_base.html:8 +#: company/templates/company/company_base.html:12 stock/api.py:761 +#: templates/InvenTree/search.html:178 templates/js/translated/company.js:495 +msgid "Company" +msgstr "" + +#: company/models.py:378 +msgid "Select company" +msgstr "" + +#: company/models.py:383 +msgid "Address title" +msgstr "" + +#: company/models.py:384 +msgid "Title describing the address entry" +msgstr "" + +#: company/models.py:390 +msgid "Primary address" +msgstr "" + +#: company/models.py:391 +msgid "Set as primary address" +msgstr "" + +#: company/models.py:396 templates/js/translated/company.js:904 +#: templates/js/translated/company.js:961 +msgid "Line 1" +msgstr "" + +#: company/models.py:397 +msgid "Address line 1" +msgstr "" + +#: company/models.py:403 templates/js/translated/company.js:905 +#: templates/js/translated/company.js:967 +msgid "Line 2" +msgstr "" + +#: company/models.py:404 +msgid "Address line 2" +msgstr "" + +#: company/models.py:410 company/models.py:411 +#: templates/js/translated/company.js:973 +msgid "Postal code" +msgstr "" + +#: company/models.py:417 +msgid "City/Region" +msgstr "" + +#: company/models.py:418 +msgid "Postal code city/region" +msgstr "" + +#: company/models.py:424 +msgid "State/Province" +msgstr "" + +#: company/models.py:425 +msgid "State or province" +msgstr "" + +#: company/models.py:431 templates/js/translated/company.js:991 +msgid "Country" +msgstr "" + +#: company/models.py:432 +msgid "Address country" +msgstr "" + +#: company/models.py:438 +msgid "Courier shipping notes" +msgstr "" + +#: company/models.py:439 +msgid "Notes for shipping courier" +msgstr "" + +#: company/models.py:445 +msgid "Internal shipping notes" +msgstr "" + +#: company/models.py:446 +msgid "Shipping notes for internal use" +msgstr "" + +#: company/models.py:453 +msgid "Link to address information (external)" +msgstr "" + +#: company/models.py:484 company/models.py:785 stock/models.py:754 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 +#: templates/js/translated/bom.js:622 +msgid "Base Part" +msgstr "" + +#: company/models.py:486 company/models.py:787 +msgid "Select part" +msgstr "" + +#: company/models.py:495 company/templates/company/company_base.html:76 +#: company/templates/company/manufacturer_part.html:90 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 +#: stock/templates/stock/item_base.html:207 +#: templates/js/translated/company.js:506 +#: templates/js/translated/company.js:1108 +#: templates/js/translated/company.js:1286 +#: templates/js/translated/company.js:1601 +#: templates/js/translated/table_filters.js:796 +msgid "Manufacturer" +msgstr "" + +#: company/models.py:496 +msgid "Select manufacturer" +msgstr "" + +#: company/models.py:502 company/templates/company/manufacturer_part.html:101 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 +#: templates/js/translated/company.js:351 +#: templates/js/translated/company.js:1107 +#: templates/js/translated/company.js:1302 +#: templates/js/translated/company.js:1620 templates/js/translated/part.js:1800 +#: templates/js/translated/purchase_order.js:1852 +#: templates/js/translated/purchase_order.js:2054 +msgid "MPN" +msgstr "" + +#: company/models.py:503 +msgid "Manufacturer Part Number" +msgstr "" + +#: company/models.py:510 +msgid "URL for external manufacturer part link" +msgstr "" + +#: company/models.py:518 +msgid "Manufacturer part description" +msgstr "" + +#: company/models.py:575 company/models.py:602 company/models.py:811 +#: 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:609 +msgid "Parameter name" +msgstr "" + +#: company/models.py:615 +#: report/templates/report/inventree_test_report_base.html:104 +#: stock/models.py:2441 templates/js/translated/company.js:1156 +#: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 +#: templates/js/translated/stock.js:1519 +msgid "Value" +msgstr "" + +#: company/models.py:616 +msgid "Parameter value" +msgstr "" + +#: company/models.py:623 company/templates/company/supplier_part.html:168 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 +#: part/templates/part/part_base.html:284 +#: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 +#: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 +msgid "Units" +msgstr "" + +#: company/models.py:624 +msgid "Parameter units" +msgstr "" + +#: company/models.py:725 +msgid "Pack units must be compatible with the base part units" +msgstr "" + +#: company/models.py:732 +msgid "Pack units must be greater than zero" +msgstr "" + +#: company/models.py:746 +msgid "Linked manufacturer part must reference the same base part" +msgstr "" + +#: company/models.py:795 company/templates/company/company_base.html:81 +#: company/templates/company/supplier_part.html:129 order/models.py:453 +#: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 +#: part/serializers.py:499 plugin/builtin/suppliers/digikey.py:25 +#: plugin/builtin/suppliers/lcsc.py:26 plugin/builtin/suppliers/mouser.py:24 +#: plugin/builtin/suppliers/tme.py:26 stock/templates/stock/item_base.html:224 +#: templates/email/overdue_purchase_order.html:16 +#: templates/js/translated/company.js:350 +#: templates/js/translated/company.js:510 +#: templates/js/translated/company.js:1574 templates/js/translated/part.js:1768 +#: templates/js/translated/pricing.js:498 +#: templates/js/translated/purchase_order.js:1690 +#: templates/js/translated/table_filters.js:800 +msgid "Supplier" +msgstr "" + +#: company/models.py:796 +msgid "Select supplier" +msgstr "" + +#: company/models.py:802 part/serializers.py:510 +msgid "Supplier stock keeping unit" +msgstr "" + +#: company/models.py:812 +msgid "Select manufacturer part" +msgstr "" + +#: company/models.py:819 +msgid "URL for external supplier part link" +msgstr "" + +#: company/models.py:827 +msgid "Supplier part description" +msgstr "" + +#: company/models.py:834 company/templates/company/supplier_part.html:187 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 +#: report/templates/report/inventree_bill_of_materials_report.html:140 +#: report/templates/report/inventree_po_report_base.html:32 +#: report/templates/report/inventree_return_order_report_base.html:27 +#: report/templates/report/inventree_slr_report.html:105 +#: report/templates/report/inventree_so_report_base.html:32 +#: stock/serializers.py:579 +msgid "Note" +msgstr "" + +#: company/models.py:843 part/models.py:1966 +msgid "base cost" +msgstr "" + +#: company/models.py:844 part/models.py:1967 +msgid "Minimum charge (e.g. stocking fee)" +msgstr "" + +#: company/models.py:851 company/templates/company/supplier_part.html:160 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 +#: stock/templates/stock/item_base.html:240 +#: templates/js/translated/company.js:1636 +#: templates/js/translated/stock.js:2423 +msgid "Packaging" +msgstr "" + +#: company/models.py:852 +msgid "Part packaging" +msgstr "" + +#: company/models.py:857 templates/js/translated/company.js:1641 +#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: 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:2085 +#: templates/js/translated/purchase_order.js:2102 +msgid "Pack Quantity" +msgstr "" + +#: company/models.py:859 +msgid "Total quantity supplied in a single pack. Leave empty for single items." +msgstr "" + +#: company/models.py:878 part/models.py:1973 +msgid "multiple" +msgstr "" + +#: company/models.py:879 +msgid "Order multiple" +msgstr "" + +#: company/models.py:891 +msgid "Quantity available from supplier" +msgstr "" + +#: company/models.py:897 +msgid "Availability Updated" +msgstr "" + +#: company/models.py:898 +msgid "Date of last update of availability data" +msgstr "" + +#: company/serializers.py:155 +msgid "Default currency used for this supplier" +msgstr "" + +#: company/templates/company/company_base.html:21 +#: templates/js/translated/purchase_order.js:242 +msgid "Create Purchase Order" +msgstr "" + +#: company/templates/company/company_base.html:27 +msgid "Company actions" +msgstr "" + +#: company/templates/company/company_base.html:32 +msgid "Edit company information" +msgstr "" + +#: company/templates/company/company_base.html:33 +#: templates/js/translated/company.js:444 +msgid "Edit Company" +msgstr "" + +#: company/templates/company/company_base.html:37 +msgid "Delete company" +msgstr "" + +#: company/templates/company/company_base.html:38 +#: company/templates/company/company_base.html:162 +msgid "Delete Company" +msgstr "" + +#: company/templates/company/company_base.html:47 +#: company/templates/company/manufacturer_part.html:51 +#: company/templates/company/supplier_part.html:83 +#: part/templates/part/part_thumb.html:20 +#: report/templates/report/inventree_build_order_base.html:98 +#: report/templates/report/inventree_po_report_base.html:40 +#: report/templates/report/inventree_so_report_base.html:40 +#: report/templates/report/inventree_test_report_base.html:84 +#: report/templates/report/inventree_test_report_base.html:163 +msgid "Part image" +msgstr "" + +#: company/templates/company/company_base.html:55 +#: part/templates/part/part_thumb.html:12 +msgid "Upload new image" +msgstr "" + +#: company/templates/company/company_base.html:58 +#: part/templates/part/part_thumb.html:14 +msgid "Download image from URL" +msgstr "" + +#: company/templates/company/company_base.html:60 +#: part/templates/part/part_thumb.html:16 +msgid "Delete image" +msgstr "" + +#: company/templates/company/company_base.html:86 order/models.py:898 +#: order/models.py:1993 order/templates/order/return_order_base.html:131 +#: order/templates/order/sales_order_base.html:144 stock/models.py:807 +#: stock/models.py:808 stock/serializers.py:1100 +#: stock/templates/stock/item_base.html:405 +#: templates/email/overdue_sales_order.html:16 +#: templates/js/translated/company.js:502 +#: templates/js/translated/return_order.js:296 +#: templates/js/translated/sales_order.js:784 +#: templates/js/translated/stock.js:2959 +#: templates/js/translated/table_filters.js:804 +msgid "Customer" +msgstr "" + +#: company/templates/company/company_base.html:111 +msgid "Uses default currency" +msgstr "" + +#: company/templates/company/company_base.html:118 order/models.py:329 +#: order/templates/order/order_base.html:210 +#: order/templates/order/return_order_base.html:181 +#: order/templates/order/sales_order_base.html:221 +msgid "Address" +msgstr "" + +#: company/templates/company/company_base.html:125 +msgid "Phone" +msgstr "" + +#: company/templates/company/company_base.html:205 +#: part/templates/part/part_base.html:528 +msgid "Remove Image" +msgstr "" + +#: company/templates/company/company_base.html:206 +msgid "Remove associated image from this company" +msgstr "" + +#: company/templates/company/company_base.html:208 +#: part/templates/part/part_base.html:531 +#: templates/InvenTree/settings/user.html:88 +#: templates/InvenTree/settings/user_sso.html:43 +msgid "Remove" +msgstr "" + +#: company/templates/company/company_base.html:237 +#: part/templates/part/part_base.html:560 +msgid "Upload Image" +msgstr "" + +#: company/templates/company/company_base.html:252 +#: part/templates/part/part_base.html:614 +msgid "Download Image" +msgstr "" + +#: company/templates/company/detail.html:15 +#: company/templates/company/manufacturer_part_sidebar.html:7 +#: templates/InvenTree/search.html:120 templates/js/translated/search.js:147 +msgid "Supplier Parts" +msgstr "" + +#: company/templates/company/detail.html:19 +msgid "Create new supplier part" +msgstr "" + +#: company/templates/company/detail.html:20 +#: company/templates/company/manufacturer_part.html:123 +#: part/templates/part/detail.html:356 +msgid "New Supplier Part" +msgstr "" + +#: company/templates/company/detail.html:41 templates/InvenTree/search.html:105 +#: templates/js/translated/search.js:151 +msgid "Manufacturer Parts" +msgstr "" + +#: company/templates/company/detail.html:45 +msgid "Create new manufacturer part" +msgstr "" + +#: company/templates/company/detail.html:46 part/templates/part/detail.html:376 +msgid "New Manufacturer Part" +msgstr "" + +#: company/templates/company/detail.html:65 +msgid "Supplier Stock" +msgstr "" + +#: company/templates/company/detail.html:75 +#: company/templates/company/sidebar.html:12 +#: company/templates/company/supplier_part_sidebar.html:7 +#: order/templates/order/order_base.html:13 +#: order/templates/order/purchase_orders.html:8 +#: order/templates/order/purchase_orders.html:12 +#: part/templates/part/detail.html:106 part/templates/part/part_sidebar.html:35 +#: templates/InvenTree/index.html:227 templates/InvenTree/search.html:199 +#: templates/InvenTree/settings/sidebar.html:57 +#: templates/js/translated/search.js:205 templates/navbar.html:50 +#: users/models.py:195 +msgid "Purchase Orders" +msgstr "" + +#: company/templates/company/detail.html:79 +#: order/templates/order/purchase_orders.html:17 +msgid "Create new purchase order" +msgstr "" + +#: company/templates/company/detail.html:80 +#: order/templates/order/purchase_orders.html:18 +msgid "New Purchase Order" +msgstr "" + +#: company/templates/company/detail.html:101 +#: company/templates/company/sidebar.html:21 +#: order/templates/order/sales_order_base.html:13 +#: order/templates/order/sales_orders.html:8 +#: order/templates/order/sales_orders.html:15 +#: part/templates/part/detail.html:127 part/templates/part/part_sidebar.html:39 +#: templates/InvenTree/index.html:259 templates/InvenTree/search.html:219 +#: templates/InvenTree/settings/sidebar.html:59 +#: templates/js/translated/search.js:219 templates/navbar.html:62 +#: users/models.py:196 +msgid "Sales Orders" +msgstr "" + +#: company/templates/company/detail.html:105 +#: order/templates/order/sales_orders.html:20 +msgid "Create new sales order" +msgstr "" + +#: company/templates/company/detail.html:106 +#: order/templates/order/sales_orders.html:21 +msgid "New Sales Order" +msgstr "" + +#: company/templates/company/detail.html:126 +msgid "Assigned Stock" +msgstr "" + +#: company/templates/company/detail.html:142 +#: company/templates/company/sidebar.html:29 +#: order/templates/order/return_order_base.html:13 +#: order/templates/order/return_orders.html:8 +#: order/templates/order/return_orders.html:15 +#: templates/InvenTree/settings/sidebar.html:61 +#: templates/js/translated/search.js:232 templates/navbar.html:65 +#: users/models.py:197 +msgid "Return Orders" +msgstr "" + +#: company/templates/company/detail.html:146 +#: order/templates/order/return_orders.html:20 +msgid "Create new return order" +msgstr "" + +#: company/templates/company/detail.html:147 +#: order/templates/order/return_orders.html:21 +msgid "New Return Order" +msgstr "" + +#: company/templates/company/detail.html:168 +msgid "Company Notes" +msgstr "" + +#: company/templates/company/detail.html:183 +msgid "Company Contacts" +msgstr "" + +#: company/templates/company/detail.html:187 +#: company/templates/company/detail.html:188 +msgid "Add Contact" +msgstr "" + +#: company/templates/company/detail.html:206 +msgid "Company addresses" +msgstr "" + +#: company/templates/company/detail.html:210 +#: company/templates/company/detail.html:211 +msgid "Add Address" +msgstr "" + +#: company/templates/company/manufacturer_part.html:15 company/views.py:37 +#: templates/InvenTree/search.html:180 templates/navbar.html:49 +msgid "Manufacturers" +msgstr "" + +#: company/templates/company/manufacturer_part.html:35 +#: company/templates/company/supplier_part.html:227 +#: part/templates/part/detail.html:109 part/templates/part/part_base.html:83 +msgid "Order part" +msgstr "" + +#: company/templates/company/manufacturer_part.html:39 +#: templates/js/translated/company.js:1333 +msgid "Edit manufacturer part" +msgstr "" + +#: company/templates/company/manufacturer_part.html:43 +#: templates/js/translated/company.js:1334 +msgid "Delete manufacturer part" +msgstr "" + +#: company/templates/company/manufacturer_part.html:65 +#: company/templates/company/supplier_part.html:97 +msgid "Internal Part" +msgstr "" + +#: company/templates/company/manufacturer_part.html:95 +msgid "No manufacturer information available" +msgstr "" + +#: company/templates/company/manufacturer_part.html:119 +#: company/templates/company/supplier_part.html:15 company/views.py:31 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 +msgid "Suppliers" +msgstr "" + +#: company/templates/company/manufacturer_part.html:156 +#: company/templates/company/manufacturer_part_sidebar.html:5 +#: part/templates/part/category_sidebar.html:20 +#: part/templates/part/detail.html:195 part/templates/part/part_sidebar.html:8 +msgid "Parameters" +msgstr "" + +#: company/templates/company/manufacturer_part.html:160 +#: part/templates/part/detail.html:200 +#: templates/InvenTree/settings/category.html:12 +#: templates/InvenTree/settings/part_parameters.html:24 +msgid "New Parameter" +msgstr "" + +#: company/templates/company/manufacturer_part.html:206 +#: templates/js/translated/part.js:1422 +msgid "Add Parameter" +msgstr "" + +#: company/templates/company/sidebar.html:6 +msgid "Manufactured Parts" +msgstr "" + +#: company/templates/company/sidebar.html:10 +msgid "Supplied Parts" +msgstr "" + +#: company/templates/company/sidebar.html:16 +msgid "Supplied Stock Items" +msgstr "" + +#: company/templates/company/sidebar.html:25 +msgid "Assigned Stock Items" +msgstr "" + +#: company/templates/company/sidebar.html:33 +msgid "Contacts" +msgstr "" + +#: company/templates/company/sidebar.html:35 +msgid "Addresses" +msgstr "" + +#: company/templates/company/supplier_part.html:7 +#: company/templates/company/supplier_part.html:24 stock/models.py:765 +#: stock/templates/stock/item_base.html:233 +#: templates/js/translated/company.js:1590 +#: templates/js/translated/purchase_order.js:752 +#: templates/js/translated/stock.js:2279 +msgid "Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:50 +#: templates/js/translated/company.js:1516 +msgid "Supplier part actions" +msgstr "" + +#: company/templates/company/supplier_part.html:55 +#: company/templates/company/supplier_part.html:56 +#: company/templates/company/supplier_part.html:228 +#: part/templates/part/detail.html:110 +msgid "Order Part" +msgstr "" + +#: company/templates/company/supplier_part.html:60 +#: company/templates/company/supplier_part.html:61 +msgid "Update Availability" +msgstr "" + +#: company/templates/company/supplier_part.html:63 +#: company/templates/company/supplier_part.html:64 +#: templates/js/translated/company.js:294 +msgid "Edit Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:68 +#: company/templates/company/supplier_part.html:69 +#: templates/js/translated/company.js:269 +msgid "Duplicate Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:73 +msgid "Delete Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:74 +msgid "Delete Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:133 +msgid "No supplier information available" +msgstr "" + +#: company/templates/company/supplier_part.html:139 part/bom.py:279 +#: part/bom.py:311 part/serializers.py:509 +#: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 +#: templates/js/translated/pricing.js:510 +#: templates/js/translated/purchase_order.js:1851 +#: templates/js/translated/purchase_order.js:2029 +msgid "SKU" +msgstr "" + +#: company/templates/company/supplier_part.html:206 +msgid "Supplier Part Stock" +msgstr "" + +#: company/templates/company/supplier_part.html:209 +#: part/templates/part/detail.html:24 stock/templates/stock/location.html:199 +msgid "Create new stock item" +msgstr "" + +#: company/templates/company/supplier_part.html:210 +#: part/templates/part/detail.html:25 stock/templates/stock/location.html:200 +#: templates/js/translated/stock.js:537 +msgid "New Stock Item" +msgstr "" + +#: company/templates/company/supplier_part.html:223 +msgid "Supplier Part Orders" +msgstr "" + +#: company/templates/company/supplier_part.html:246 +msgid "Pricing Information" +msgstr "" + +#: company/templates/company/supplier_part.html:251 +#: templates/js/translated/company.js:398 +#: templates/js/translated/pricing.js:684 +msgid "Add Price Break" +msgstr "" + +#: company/templates/company/supplier_part.html:276 +msgid "Supplier Part QR Code" +msgstr "" + +#: company/templates/company/supplier_part.html:287 +msgid "Link Barcode to Supplier Part" +msgstr "" + +#: company/templates/company/supplier_part.html:359 +msgid "Update Part Availability" +msgstr "" + +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 +#: part/templates/part/category.html:183 +#: part/templates/part/category_sidebar.html:17 stock/admin.py:69 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 +#: stock/templates/stock/location.html:184 +#: stock/templates/stock/location.html:196 +#: stock/templates/stock/location_sidebar.html:7 +#: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 +#: users/models.py:193 +msgid "Stock Items" +msgstr "" + +#: company/templates/company/supplier_part_sidebar.html:9 +msgid "Supplier Part Pricing" +msgstr "" + +#: company/views.py:32 +msgid "New Supplier" +msgstr "" + +#: company/views.py:38 +msgid "New Manufacturer" +msgstr "" + +#: company/views.py:43 templates/InvenTree/search.html:210 +#: templates/navbar.html:60 +msgid "Customers" +msgstr "" + +#: company/views.py:44 +msgid "New Customer" +msgstr "" + +#: company/views.py:51 templates/js/translated/search.js:192 +msgid "Companies" +msgstr "" + +#: company/views.py:52 +msgid "New Company" +msgstr "" + +#: label/api.py:247 +msgid "Error printing label" +msgstr "" + +#: label/models.py:120 +msgid "Label name" +msgstr "" + +#: label/models.py:128 +msgid "Label description" +msgstr "" + +#: label/models.py:136 +msgid "Label" +msgstr "" + +#: label/models.py:137 +msgid "Label template file" +msgstr "" + +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 +#: templates/js/translated/table_filters.js:481 +msgid "Enabled" +msgstr "" + +#: label/models.py:144 +msgid "Label template is enabled" +msgstr "" + +#: label/models.py:149 +msgid "Width [mm]" +msgstr "" + +#: label/models.py:150 +msgid "Label width, specified in mm" +msgstr "" + +#: label/models.py:156 +msgid "Height [mm]" +msgstr "" + +#: label/models.py:157 +msgid "Label height, specified in mm" +msgstr "" + +#: label/models.py:163 report/models.py:316 +msgid "Filename Pattern" +msgstr "" + +#: label/models.py:164 +msgid "Pattern for generating label filenames" +msgstr "" + +#: label/models.py:313 label/models.py:352 label/models.py:377 +#: label/models.py:412 +msgid "Query filters (comma-separated list of key=value pairs)" +msgstr "" + +#: label/models.py:314 label/models.py:353 label/models.py:378 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 +msgid "Filters" +msgstr "" + +#: label/templates/label/part/part_label.html:31 +#: label/templates/label/stockitem/qr.html:21 +#: label/templates/label/stocklocation/qr.html:20 +#: templates/allauth_2fa/setup.html:18 +msgid "QR Code" +msgstr "" + +#: label/templates/label/part/part_label_code128.html:31 +#: label/templates/label/stocklocation/qr_and_text.html:31 +#: templates/qr_code.html:7 +msgid "QR code" +msgstr "" + +#: machine/machine_types/label_printer.py:217 +msgid "Copies" +msgstr "" + +#: machine/machine_types/label_printer.py:218 +msgid "Number of copies to print for each label" +msgstr "" + +#: machine/machine_types/label_printer.py:233 +msgid "Connected" +msgstr "" + +#: machine/machine_types/label_printer.py:234 order/api.py:1461 +#: templates/js/translated/sales_order.js:1042 +msgid "Unknown" +msgstr "" + +#: machine/machine_types/label_printer.py:235 +msgid "Printing" +msgstr "" + +#: machine/machine_types/label_printer.py:236 +msgid "No media" +msgstr "" + +#: machine/machine_types/label_printer.py:237 +msgid "Disconnected" +msgstr "" + +#: machine/machine_types/label_printer.py:244 +msgid "Label Printer" +msgstr "" + +#: machine/machine_types/label_printer.py:245 +msgid "Directly print labels for various items." +msgstr "" + +#: machine/machine_types/label_printer.py:251 +msgid "Printer Location" +msgstr "" + +#: machine/machine_types/label_printer.py:252 +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:89 +#: report/templates/report/inventree_po_report_base.html:31 +#: report/templates/report/inventree_so_report_base.html:31 +#: templates/js/translated/order.js:327 +#: templates/js/translated/purchase_order.js:2126 +#: templates/js/translated/sales_order.js:1847 +msgid "Total Price" +msgstr "" + +#: order/api.py:236 +msgid "No matching purchase order found" +msgstr "" + +#: order/api.py:1455 order/models.py:1371 order/models.py:1478 +#: order/templates/order/order_base.html:9 +#: order/templates/order/order_base.html:18 +#: report/templates/report/inventree_po_report_base.html:14 +#: stock/templates/stock/item_base.html:176 +#: templates/email/overdue_purchase_order.html:15 +#: templates/js/translated/part.js:1745 templates/js/translated/pricing.js:804 +#: templates/js/translated/purchase_order.js:168 +#: templates/js/translated/purchase_order.js:753 +#: templates/js/translated/purchase_order.js:1674 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 +msgid "Purchase Order" +msgstr "" + +#: order/api.py:1459 order/models.py:2193 order/models.py:2244 +#: order/templates/order/return_order_base.html:9 +#: order/templates/order/return_order_base.html:28 +#: report/templates/report/inventree_return_order_report_base.html:13 +#: templates/js/translated/return_order.js:281 +#: templates/js/translated/stock.js:2941 +msgid "Return Order" +msgstr "" + +#: order/models.py:90 +msgid "Total price for this order" +msgstr "" + +#: order/models.py:95 order/serializers.py:65 +msgid "Order Currency" +msgstr "" + +#: order/models.py:98 order/serializers.py:66 +msgid "Currency for this order (leave blank to use company default)" +msgstr "" + +#: order/models.py:234 +msgid "Contact does not match selected company" +msgstr "" + +#: order/models.py:266 +msgid "Order description (optional)" +msgstr "" + +#: order/models.py:275 +msgid "Select project code for this order" +msgstr "" + +#: order/models.py:279 order/models.py:1276 order/models.py:1690 +msgid "Link to external page" +msgstr "" + +#: order/models.py:287 +msgid "Expected date for order delivery. Order will be overdue after this date." +msgstr "" + +#: order/models.py:301 +msgid "Created By" +msgstr "" + +#: order/models.py:309 +msgid "User or group responsible for this order" +msgstr "" + +#: order/models.py:320 +msgid "Point of contact for this order" +msgstr "" + +#: order/models.py:330 +msgid "Company address for this order" +msgstr "" + +#: order/models.py:431 order/models.py:887 +msgid "Order reference" +msgstr "" + +#: order/models.py:439 order/models.py:911 +msgid "Purchase order status" +msgstr "" + +#: order/models.py:454 +msgid "Company from which the items are being ordered" +msgstr "" + +#: order/models.py:465 order/templates/order/order_base.html:148 +#: templates/js/translated/purchase_order.js:1703 +msgid "Supplier Reference" +msgstr "" + +#: order/models.py:466 +msgid "Supplier order reference code" +msgstr "" + +#: order/models.py:475 +msgid "received by" +msgstr "" + +#: order/models.py:481 order/models.py:2019 +msgid "Issue Date" +msgstr "" + +#: order/models.py:482 order/models.py:2020 +msgid "Date order was issued" +msgstr "" + +#: order/models.py:489 order/models.py:2027 +msgid "Date order was completed" +msgstr "" + +#: order/models.py:533 +msgid "Part supplier must match PO supplier" +msgstr "" + +#: order/models.py:727 +msgid "Quantity must be a positive number" +msgstr "" + +#: order/models.py:899 +msgid "Company to which the items are being sold" +msgstr "" + +#: order/models.py:922 order/models.py:2012 +msgid "Customer Reference " +msgstr "" + +#: order/models.py:923 order/models.py:2013 +msgid "Customer order reference code" +msgstr "" + +#: order/models.py:927 order/models.py:1644 +#: templates/js/translated/sales_order.js:843 +#: templates/js/translated/sales_order.js:1024 +msgid "Shipment Date" +msgstr "" + +#: order/models.py:936 +msgid "shipped by" +msgstr "" + +#: order/models.py:987 +msgid "Order cannot be completed as no parts have been assigned" +msgstr "" + +#: order/models.py:992 +msgid "Only an open order can be marked as complete" +msgstr "" + +#: order/models.py:996 templates/js/translated/sales_order.js:506 +msgid "Order cannot be completed as there are incomplete shipments" +msgstr "" + +#: order/models.py:1001 +msgid "Order cannot be completed as there are incomplete line items" +msgstr "" + +#: order/models.py:1248 +msgid "Item quantity" +msgstr "" + +#: order/models.py:1265 +msgid "Line item reference" +msgstr "" + +#: order/models.py:1272 +msgid "Line item notes" +msgstr "" + +#: order/models.py:1284 +msgid "Target date for this line item (leave blank to use the target date from the order)" +msgstr "" + +#: order/models.py:1305 +msgid "Line item description (optional)" +msgstr "" + +#: order/models.py:1311 +msgid "Context" +msgstr "" + +#: order/models.py:1312 +msgid "Additional context for this line" +msgstr "" + +#: order/models.py:1322 +msgid "Unit price" +msgstr "" + +#: order/models.py:1355 +msgid "Supplier part must match supplier" +msgstr "" + +#: order/models.py:1362 +msgid "deleted" +msgstr "" + +#: order/models.py:1370 order/models.py:1477 order/models.py:1523 +#: order/models.py:1637 order/models.py:1789 order/models.py:2192 +#: order/models.py:2243 templates/js/translated/sales_order.js:1488 +msgid "Order" +msgstr "" + +#: order/models.py:1390 +msgid "Supplier part" +msgstr "" + +#: order/models.py:1397 order/templates/order/order_base.html:196 +#: templates/js/translated/part.js:1869 templates/js/translated/part.js:1901 +#: templates/js/translated/purchase_order.js:1306 +#: templates/js/translated/purchase_order.js:2170 +#: templates/js/translated/return_order.js:764 +#: templates/js/translated/table_filters.js:120 +#: templates/js/translated/table_filters.js:602 +msgid "Received" +msgstr "" + +#: order/models.py:1398 +msgid "Number of items received" +msgstr "" + +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 +#: stock/templates/stock/item_base.html:183 +#: templates/js/translated/stock.js:2310 +msgid "Purchase Price" +msgstr "" + +#: order/models.py:1407 +msgid "Unit purchase price" +msgstr "" + +#: order/models.py:1422 +msgid "Where does the Purchaser want this item to be stored?" +msgstr "" + +#: order/models.py:1511 +msgid "Virtual part cannot be assigned to a sales order" +msgstr "" + +#: order/models.py:1516 +msgid "Only salable parts can be assigned to a sales order" +msgstr "" + +#: order/models.py:1542 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:1543 +msgid "Unit sale price" +msgstr "" + +#: order/models.py:1553 +msgid "Shipped quantity" +msgstr "" + +#: order/models.py:1645 +msgid "Date of shipment" +msgstr "" + +#: order/models.py:1651 templates/js/translated/sales_order.js:1036 +msgid "Delivery Date" +msgstr "" + +#: order/models.py:1652 +msgid "Date of delivery of shipment" +msgstr "" + +#: order/models.py:1660 +msgid "Checked By" +msgstr "" + +#: order/models.py:1661 +msgid "User who checked this shipment" +msgstr "" + +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 +msgid "Shipment" +msgstr "" + +#: order/models.py:1669 +msgid "Shipment number" +msgstr "" + +#: order/models.py:1677 +msgid "Tracking Number" +msgstr "" + +#: order/models.py:1678 +msgid "Shipment tracking information" +msgstr "" + +#: order/models.py:1685 +msgid "Invoice Number" +msgstr "" + +#: order/models.py:1686 +msgid "Reference number for associated invoice" +msgstr "" + +#: order/models.py:1706 +msgid "Shipment has already been sent" +msgstr "" + +#: order/models.py:1709 +msgid "Shipment has no allocated stock items" +msgstr "" + +#: order/models.py:1825 order/models.py:1827 +msgid "Stock item has not been assigned" +msgstr "" + +#: order/models.py:1834 +msgid "Cannot allocate stock item to a line with a different part" +msgstr "" + +#: order/models.py:1837 +msgid "Cannot allocate stock to a line without a part" +msgstr "" + +#: order/models.py:1840 +msgid "Allocation quantity cannot exceed stock quantity" +msgstr "" + +#: order/models.py:1859 order/serializers.py:1220 +msgid "Quantity must be 1 for serialized stock item" +msgstr "" + +#: order/models.py:1862 +msgid "Sales order does not match shipment" +msgstr "" + +#: order/models.py:1863 plugin/base/barcodes/api.py:481 +msgid "Shipment does not match sales order" +msgstr "" + +#: order/models.py:1871 +msgid "Line" +msgstr "" + +#: order/models.py:1880 +msgid "Sales order shipment reference" +msgstr "" + +#: order/models.py:1893 order/models.py:2200 +#: templates/js/translated/return_order.js:722 +msgid "Item" +msgstr "" + +#: order/models.py:1894 +msgid "Select stock item to allocate" +msgstr "" + +#: order/models.py:1903 +msgid "Enter stock allocation quantity" +msgstr "" + +#: order/models.py:1982 +msgid "Return Order reference" +msgstr "" + +#: order/models.py:1994 +msgid "Company from which items are being returned" +msgstr "" + +#: order/models.py:2006 +msgid "Return order status" +msgstr "" + +#: order/models.py:2185 +msgid "Only serialized items can be assigned to a Return Order" +msgstr "" + +#: order/models.py:2201 +msgid "Select item to return from customer" +msgstr "" + +#: order/models.py:2207 +msgid "Received Date" +msgstr "" + +#: order/models.py:2208 +msgid "The date this this return item was received" +msgstr "" + +#: order/models.py:2219 templates/js/translated/return_order.js:733 +#: templates/js/translated/table_filters.js:123 +msgid "Outcome" +msgstr "" + +#: order/models.py:2220 +msgid "Outcome for this line item" +msgstr "" + +#: order/models.py:2227 +msgid "Cost associated with return or repair for this line item" +msgstr "" + +#: order/serializers.py:277 +msgid "Order cannot be cancelled" +msgstr "" + +#: order/serializers.py:292 order/serializers.py:1236 +msgid "Allow order to be closed with incomplete line items" +msgstr "" + +#: order/serializers.py:302 order/serializers.py:1246 +msgid "Order has incomplete line items" +msgstr "" + +#: order/serializers.py:430 +msgid "Order is not open" +msgstr "" + +#: order/serializers.py:451 +msgid "Auto Pricing" +msgstr "" + +#: order/serializers.py:453 +msgid "Automatically calculate purchase price based on supplier part data" +msgstr "" + +#: order/serializers.py:463 +msgid "Purchase price currency" +msgstr "" + +#: order/serializers.py:469 +msgid "Merge Items" +msgstr "" + +#: order/serializers.py:471 +msgid "Merge items with the same part, destination and target date into one line item" +msgstr "" + +#: order/serializers.py:489 +msgid "Supplier part must be specified" +msgstr "" + +#: order/serializers.py:492 +msgid "Purchase order must be specified" +msgstr "" + +#: order/serializers.py:500 +msgid "Supplier must match purchase order" +msgstr "" + +#: order/serializers.py:501 +msgid "Purchase order must match supplier" +msgstr "" + +#: order/serializers.py:540 order/serializers.py:1314 +msgid "Line Item" +msgstr "" + +#: order/serializers.py:546 +msgid "Line item does not match purchase order" +msgstr "" + +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 +msgid "Select destination location for received items" +msgstr "" + +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 +msgid "Enter batch code for incoming stock items" +msgstr "" + +#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154 +msgid "Enter serial numbers for incoming stock items" +msgstr "" + +#: order/serializers.py:591 templates/js/translated/barcode.js:52 +msgid "Barcode" +msgstr "" + +#: order/serializers.py:592 +msgid "Scanned barcode" +msgstr "" + +#: order/serializers.py:608 +msgid "Barcode is already in use" +msgstr "" + +#: order/serializers.py:632 +msgid "An integer quantity must be provided for trackable parts" +msgstr "" + +#: order/serializers.py:680 order/serializers.py:1685 +msgid "Line items must be provided" +msgstr "" + +#: order/serializers.py:696 +msgid "Destination location must be specified" +msgstr "" + +#: order/serializers.py:707 +msgid "Supplied barcode values must be unique" +msgstr "" + +#: order/serializers.py:1064 +msgid "Sale price currency" +msgstr "" + +#: order/serializers.py:1124 +msgid "No shipment details provided" +msgstr "" + +#: order/serializers.py:1184 order/serializers.py:1323 +msgid "Line item is not associated with this order" +msgstr "" + +#: order/serializers.py:1203 +msgid "Quantity must be positive" +msgstr "" + +#: order/serializers.py:1333 +msgid "Enter serial numbers to allocate" +msgstr "" + +#: order/serializers.py:1355 order/serializers.py:1461 +msgid "Shipment has already been shipped" +msgstr "" + +#: order/serializers.py:1358 order/serializers.py:1464 +msgid "Shipment is not associated with this order" +msgstr "" + +#: order/serializers.py:1405 +msgid "No match found for the following serial numbers" +msgstr "" + +#: order/serializers.py:1412 +msgid "The following serial numbers are already allocated" +msgstr "" + +#: order/serializers.py:1639 +msgid "Return order line item" +msgstr "" + +#: order/serializers.py:1645 +msgid "Line item does not match return order" +msgstr "" + +#: order/serializers.py:1648 +msgid "Line item has already been received" +msgstr "" + +#: order/serializers.py:1677 +msgid "Items can only be received against orders which are in progress" +msgstr "" + +#: order/serializers.py:1755 +msgid "Line price currency" +msgstr "" + +#: order/tasks.py:25 +msgid "Overdue Purchase Order" +msgstr "" + +#: order/tasks.py:30 +#, python-brace-format +msgid "Purchase order {po} is now overdue" +msgstr "" + +#: order/tasks.py:75 +msgid "Overdue Sales Order" +msgstr "" + +#: order/tasks.py:80 +#, python-brace-format +msgid "Sales order {so} is now overdue" +msgstr "" + +#: order/templates/order/order_base.html:51 +msgid "Print purchase order report" +msgstr "" + +#: order/templates/order/order_base.html:53 +#: order/templates/order/return_order_base.html:62 +#: order/templates/order/sales_order_base.html:62 +msgid "Export order to file" +msgstr "" + +#: order/templates/order/order_base.html:59 +#: order/templates/order/return_order_base.html:72 +#: order/templates/order/sales_order_base.html:71 +msgid "Order actions" +msgstr "" + +#: order/templates/order/order_base.html:64 +#: order/templates/order/return_order_base.html:76 +#: order/templates/order/sales_order_base.html:75 +msgid "Edit order" +msgstr "" + +#: order/templates/order/order_base.html:68 +#: order/templates/order/return_order_base.html:78 +#: order/templates/order/sales_order_base.html:77 +msgid "Cancel order" +msgstr "" + +#: order/templates/order/order_base.html:73 +msgid "Duplicate order" +msgstr "" + +#: order/templates/order/order_base.html:79 +#: order/templates/order/order_base.html:80 +#: order/templates/order/return_order_base.html:82 +#: order/templates/order/return_order_base.html:83 +#: order/templates/order/sales_order_base.html:83 +#: order/templates/order/sales_order_base.html:84 +msgid "Issue Order" +msgstr "" + +#: order/templates/order/order_base.html:83 +#: order/templates/order/return_order_base.html:86 +msgid "Mark order as complete" +msgstr "" + +#: order/templates/order/order_base.html:84 +#: order/templates/order/return_order_base.html:87 +#: order/templates/order/sales_order_base.html:93 +msgid "Complete Order" +msgstr "" + +#: order/templates/order/order_base.html:91 +msgid "Supplier part thumbnail" +msgstr "" + +#: order/templates/order/order_base.html:106 +#: order/templates/order/return_order_base.html:101 +#: order/templates/order/sales_order_base.html:106 +msgid "Order Reference" +msgstr "" + +#: order/templates/order/order_base.html:111 +#: order/templates/order/return_order_base.html:106 +#: order/templates/order/sales_order_base.html:111 +msgid "Order Description" +msgstr "" + +#: order/templates/order/order_base.html:118 +#: order/templates/order/return_order_base.html:113 +#: order/templates/order/sales_order_base.html:118 +msgid "Order Status" +msgstr "" + +#: order/templates/order/order_base.html:141 +msgid "No suppplier information available" +msgstr "" + +#: order/templates/order/order_base.html:154 +#: order/templates/order/sales_order_base.html:157 +msgid "Completed Line Items" +msgstr "" + +#: order/templates/order/order_base.html:160 +#: order/templates/order/sales_order_base.html:163 +#: order/templates/order/sales_order_base.html:173 +msgid "Incomplete" +msgstr "" + +#: order/templates/order/order_base.html:179 +#: order/templates/order/return_order_base.html:157 +#: report/templates/report/inventree_build_order_base.html:121 +msgid "Issued" +msgstr "" + +#: order/templates/order/order_base.html:224 +msgid "Total cost" +msgstr "" + +#: order/templates/order/order_base.html:228 +#: order/templates/order/return_order_base.html:199 +#: order/templates/order/sales_order_base.html:239 +msgid "Total cost could not be calculated" +msgstr "" + +#: order/templates/order/order_base.html:318 +msgid "Purchase Order QR Code" +msgstr "" + +#: order/templates/order/order_base.html:330 +msgid "Link Barcode to Purchase Order" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:9 +#: part/templates/part/import_wizard/ajax_match_fields.html:9 +#: part/templates/part/import_wizard/match_fields.html:9 +#: templates/patterns/wizard/match_fields.html:8 +msgid "Missing selections for the following required columns" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:20 +#: part/templates/part/import_wizard/ajax_match_fields.html:20 +#: part/templates/part/import_wizard/match_fields.html:20 +#: templates/patterns/wizard/match_fields.html:19 +msgid "Duplicate selections found, see below. Fix them then retry submitting." +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:29 +#: order/templates/order/order_wizard/match_parts.html:21 +#: part/templates/part/import_wizard/match_fields.html:29 +#: part/templates/part/import_wizard/match_references.html:21 +#: templates/patterns/wizard/match_fields.html:28 +msgid "Submit Selections" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:35 +#: part/templates/part/import_wizard/ajax_match_fields.html:28 +#: part/templates/part/import_wizard/match_fields.html:35 +#: templates/patterns/wizard/match_fields.html:34 +msgid "File Fields" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:42 +#: part/templates/part/import_wizard/ajax_match_fields.html:35 +#: part/templates/part/import_wizard/match_fields.html:42 +#: templates/patterns/wizard/match_fields.html:41 +msgid "Remove column" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:60 +#: part/templates/part/import_wizard/ajax_match_fields.html:53 +#: part/templates/part/import_wizard/match_fields.html:60 +#: templates/patterns/wizard/match_fields.html:59 +msgid "Duplicate selection" +msgstr "" + +#: order/templates/order/order_wizard/match_fields.html:71 +#: order/templates/order/order_wizard/match_parts.html:52 +#: part/templates/part/import_wizard/ajax_match_fields.html:64 +#: part/templates/part/import_wizard/ajax_match_references.html:42 +#: part/templates/part/import_wizard/match_fields.html:71 +#: part/templates/part/import_wizard/match_references.html:49 +#: templates/js/translated/bom.js:133 templates/js/translated/build.js:529 +#: templates/js/translated/build.js:1626 +#: templates/js/translated/purchase_order.js:696 +#: templates/js/translated/purchase_order.js:1236 +#: templates/js/translated/return_order.js:506 +#: templates/js/translated/sales_order.js:1109 +#: templates/js/translated/stock.js:714 templates/js/translated/stock.js:883 +#: templates/patterns/wizard/match_fields.html:70 +msgid "Remove row" +msgstr "" + +#: order/templates/order/order_wizard/match_parts.html:12 +#: part/templates/part/import_wizard/ajax_match_references.html:12 +#: part/templates/part/import_wizard/match_references.html:12 +msgid "Errors exist in the submitted data" +msgstr "" + +#: order/templates/order/order_wizard/match_parts.html:28 +#: part/templates/part/import_wizard/ajax_match_references.html:21 +#: part/templates/part/import_wizard/match_references.html:28 +msgid "Row" +msgstr "" + +#: order/templates/order/order_wizard/match_parts.html:29 +msgid "Select Supplier Part" +msgstr "" + +#: order/templates/order/order_wizard/po_upload.html:8 +msgid "Return to Orders" +msgstr "" + +#: order/templates/order/order_wizard/po_upload.html:13 +msgid "Upload File for Purchase Order" +msgstr "" + +#: order/templates/order/order_wizard/po_upload.html:14 +msgid "Order is already processed. Files cannot be uploaded." +msgstr "" + +#: order/templates/order/order_wizard/po_upload.html:27 +#: part/templates/part/import_wizard/ajax_part_upload.html:10 +#: part/templates/part/import_wizard/part_upload.html:26 +#: templates/patterns/wizard/upload.html:13 +#, python-format +msgid "Step %(step)s of %(count)s" +msgstr "" + +#: order/templates/order/po_sidebar.html:5 +#: order/templates/order/return_order_detail.html:18 +#: order/templates/order/so_sidebar.html:5 +#: report/templates/report/inventree_po_report_base.html:22 +#: report/templates/report/inventree_return_order_report_base.html:19 +#: report/templates/report/inventree_so_report_base.html:22 +msgid "Line Items" +msgstr "" + +#: order/templates/order/po_sidebar.html:7 +msgid "Received Stock" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:18 +msgid "Purchase Order Items" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:27 +#: order/templates/order/return_order_detail.html:24 +#: order/templates/order/sales_order_detail.html:24 +#: templates/js/translated/purchase_order.js:414 +#: templates/js/translated/return_order.js:459 +#: templates/js/translated/sales_order.js:237 +msgid "Add Line Item" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:31 +#: order/templates/order/purchase_order_detail.html:32 +#: order/templates/order/return_order_detail.html:28 +#: order/templates/order/return_order_detail.html:29 +msgid "Receive Line Items" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:50 +#: order/templates/order/return_order_detail.html:45 +#: order/templates/order/sales_order_detail.html:41 +msgid "Extra Lines" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:56 +#: order/templates/order/return_order_detail.html:51 +#: order/templates/order/sales_order_detail.html:47 +msgid "Add Extra Line" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:74 +msgid "Received Items" +msgstr "" + +#: order/templates/order/purchase_order_detail.html:99 +#: order/templates/order/return_order_detail.html:85 +#: order/templates/order/sales_order_detail.html:139 +msgid "Order Notes" +msgstr "" + +#: order/templates/order/return_order_base.html:18 +#: order/templates/order/sales_order_base.html:18 +msgid "Customer logo thumbnail" +msgstr "" + +#: order/templates/order/return_order_base.html:60 +msgid "Print return order report" +msgstr "" + +#: order/templates/order/return_order_base.html:64 +#: order/templates/order/sales_order_base.html:64 +msgid "Print packing list" +msgstr "" + +#: order/templates/order/return_order_base.html:138 +#: order/templates/order/sales_order_base.html:151 +#: templates/js/translated/return_order.js:309 +#: templates/js/translated/sales_order.js:797 +msgid "Customer Reference" +msgstr "" + +#: order/templates/order/return_order_base.html:195 +#: order/templates/order/sales_order_base.html:235 +#: part/templates/part/part_pricing.html:32 +#: part/templates/part/part_pricing.html:58 +#: part/templates/part/part_pricing.html:99 +#: part/templates/part/part_pricing.html:114 +#: templates/js/translated/part.js:1072 +#: templates/js/translated/purchase_order.js:1753 +#: templates/js/translated/return_order.js:381 +#: templates/js/translated/sales_order.js:855 +msgid "Total Cost" +msgstr "" + +#: order/templates/order/return_order_base.html:263 +msgid "Return Order QR Code" +msgstr "" + +#: order/templates/order/return_order_base.html:275 +msgid "Link Barcode to Return Order" +msgstr "" + +#: order/templates/order/return_order_sidebar.html:5 +msgid "Order Details" +msgstr "" + +#: order/templates/order/sales_order_base.html:60 +msgid "Print sales order report" +msgstr "" + +#: order/templates/order/sales_order_base.html:88 +#: order/templates/order/sales_order_base.html:89 +msgid "Ship Items" +msgstr "" + +#: order/templates/order/sales_order_base.html:92 +#: templates/js/translated/sales_order.js:484 +msgid "Complete Sales Order" +msgstr "" + +#: order/templates/order/sales_order_base.html:131 +msgid "This Sales Order has not been fully allocated" +msgstr "" + +#: order/templates/order/sales_order_base.html:169 +#: order/templates/order/sales_order_detail.html:99 +#: order/templates/order/so_sidebar.html:11 +msgid "Completed Shipments" +msgstr "" + +#: order/templates/order/sales_order_base.html:312 +msgid "Sales Order QR Code" +msgstr "" + +#: order/templates/order/sales_order_base.html:324 +msgid "Link Barcode to Sales Order" +msgstr "" + +#: order/templates/order/sales_order_detail.html:18 +msgid "Sales Order Items" +msgstr "" + +#: order/templates/order/sales_order_detail.html:67 +#: order/templates/order/so_sidebar.html:8 templates/InvenTree/index.html:284 +msgid "Pending Shipments" +msgstr "" + +#: order/templates/order/sales_order_detail.html:71 +#: templates/js/translated/bom.js: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:404 part/models.py:3895 part/stocktake.py:218 +#: stock/admin.py:153 +msgid "Part ID" +msgstr "" + +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 +#: stock/admin.py:157 +msgid "Part Name" +msgstr "" + +#: part/admin.py:45 part/stocktake.py:220 +msgid "Part Description" +msgstr "" + +#: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 +#: report/templates/report/inventree_slr_report.html:103 +#: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 +#: templates/js/translated/stock.js:2035 +msgid "IPN" +msgstr "" + +#: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 +#: report/models.py:194 templates/js/translated/part.js:1231 +#: templates/js/translated/part.js:2347 +msgid "Revision" +msgstr "" + +#: part/admin.py:53 part/admin.py:317 part/models.py:885 +#: part/templates/part/category.html:94 part/templates/part/part_base.html:298 +msgid "Keywords" +msgstr "" + +#: part/admin.py:60 +msgid "Part Image" +msgstr "" + +#: part/admin.py:63 part/admin.py:300 part/stocktake.py:221 +msgid "Category ID" +msgstr "" + +#: part/admin.py:67 part/admin.py:302 part/stocktake.py:222 +msgid "Category Name" +msgstr "" + +#: part/admin.py:71 part/admin.py:314 +msgid "Default Location ID" +msgstr "" + +#: part/admin.py:76 +msgid "Default Supplier ID" +msgstr "" + +#: part/admin.py:81 part/models.py:871 part/templates/part/part_base.html:177 +msgid "Variant Of" +msgstr "" + +#: part/admin.py:84 part/models.py:999 part/templates/part/part_base.html:203 +msgid "Minimum Stock" +msgstr "" + +#: part/admin.py:126 part/templates/part/part_base.html:197 +#: templates/js/translated/company.js:1679 +#: templates/js/translated/table_filters.js:355 +msgid "In Stock" +msgstr "" + +#: part/admin.py:138 part/templates/part/part_sidebar.html:27 +msgid "Used In" +msgstr "" + +#: part/admin.py:150 part/templates/part/part_base.html:241 stock/admin.py:231 +#: templates/js/translated/part.js:714 templates/js/translated/part.js:2152 +msgid "Building" +msgstr "" + +#: part/admin.py:155 part/models.py:3079 part/models.py:3093 +#: templates/js/translated/part.js:969 +msgid "Minimum Cost" +msgstr "" + +#: part/admin.py:158 part/models.py:3086 part/models.py:3100 +#: templates/js/translated/part.js:979 +msgid "Maximum Cost" +msgstr "" + +#: part/admin.py:306 part/admin.py:393 stock/admin.py:58 stock/admin.py:211 +msgid "Parent ID" +msgstr "" + +#: part/admin.py:310 part/admin.py:400 stock/admin.py:62 +msgid "Parent Name" +msgstr "" + +#: part/admin.py:318 part/templates/part/category.html:88 +#: part/templates/part/category.html:101 +msgid "Category Path" +msgstr "" + +#: part/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 +#: part/templates/part/category.html:141 part/templates/part/category.html:161 +#: part/templates/part/category_sidebar.html:9 +#: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 +#: templates/InvenTree/settings/sidebar.html:47 +#: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 +#: templates/navbar.html:24 users/models.py:190 +msgid "Parts" +msgstr "" + +#: part/admin.py:384 +msgid "BOM Level" +msgstr "" + +#: part/admin.py:387 +msgid "BOM Item ID" +msgstr "" + +#: part/admin.py:397 +msgid "Parent IPN" +msgstr "" + +#: part/admin.py:408 part/models.py:3897 +msgid "Part IPN" +msgstr "" + +#: part/admin.py:421 part/serializers.py:1256 +#: templates/js/translated/pricing.js:358 +#: templates/js/translated/pricing.js:1024 +msgid "Minimum Price" +msgstr "" + +#: part/admin.py:426 part/serializers.py:1271 +#: templates/js/translated/pricing.js:353 +#: templates/js/translated/pricing.js:1032 +msgid "Maximum Price" +msgstr "" + +#: part/api.py:118 +msgid "Starred" +msgstr "" + +#: part/api.py:120 +msgid "Filter by starred categories" +msgstr "" + +#: part/api.py:137 stock/api.py:281 +msgid "Depth" +msgstr "" + +#: part/api.py:137 +msgid "Filter by category depth" +msgstr "" + +#: part/api.py:155 stock/api.py:299 +msgid "Cascade" +msgstr "" + +#: part/api.py:157 +msgid "Include sub-categories in filtered results" +msgstr "" + +#: part/api.py:177 +msgid "Parent" +msgstr "" + +#: part/api.py:179 +msgid "Filter by parent category" +msgstr "" + +#: part/api.py:212 +msgid "Exclude Tree" +msgstr "" + +#: part/api.py:214 +msgid "Exclude sub-categories under the specified category" +msgstr "" + +#: part/api.py:455 +msgid "Has Results" +msgstr "" + +#: part/api.py:622 +msgid "Incoming Purchase Order" +msgstr "" + +#: part/api.py:640 +msgid "Outgoing Sales Order" +msgstr "" + +#: part/api.py:656 +msgid "Stock produced by Build Order" +msgstr "" + +#: part/api.py:740 +msgid "Stock required for Build Order" +msgstr "" + +#: part/api.py:887 +msgid "Valid" +msgstr "" + +#: part/api.py:888 +msgid "Validate entire Bill of Materials" +msgstr "" + +#: part/api.py:894 +msgid "This option must be selected" +msgstr "" + +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 +#: part/templates/part/part_base.html:260 stock/api.py:733 +#: 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:1828 +msgid "Uses" +msgstr "" + +#: part/bom.py:170 part/models.py:100 part/models.py:938 +#: part/templates/part/category.html:116 part/templates/part/part_base.html:367 +msgid "Default Location" +msgstr "" + +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 +msgid "Total Stock" +msgstr "" + +#: part/forms.py:49 +msgid "Input quantity for price calculation" +msgstr "" + +#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16 +#: part/templates/part/part_app_base.html:10 +msgid "Part Category" +msgstr "" + +#: part/models.py:82 part/templates/part/category.html:136 +#: templates/InvenTree/search.html:97 templates/js/translated/search.js:158 +#: users/models.py:189 +msgid "Part Categories" +msgstr "" + +#: part/models.py:101 +msgid "Default location for parts in this category" +msgstr "" + +#: part/models.py:106 stock/models.py:165 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:108 +msgid "Parts may not be directly assigned to a structural category, but may be assigned to child categories." +msgstr "" + +#: part/models.py:117 +msgid "Default keywords" +msgstr "" + +#: part/models.py:118 +msgid "Default keywords for parts in this category" +msgstr "" + +#: part/models.py:124 stock/models.py:89 stock/models.py:148 +#: templates/InvenTree/settings/settings_staff_js.html:456 +msgid "Icon" +msgstr "" + +#: part/models.py:125 stock/models.py:149 +msgid "Icon (optional)" +msgstr "" + +#: part/models.py:147 +msgid "You cannot make this part category structural because some parts are already assigned to it!" +msgstr "" + +#: part/models.py:483 +msgid "Invalid choice for parent part" +msgstr "" + +#: part/models.py:531 part/models.py:538 +#, python-brace-format +msgid "Part '{self}' cannot be used in BOM for '{parent}' (recursive)" +msgstr "" + +#: part/models.py:550 +#, python-brace-format +msgid "Part '{parent}' is used in BOM for '{self}' (recursive)" +msgstr "" + +#: part/models.py:615 +#, python-brace-format +msgid "IPN must match regex pattern {pattern}" +msgstr "" + +#: part/models.py:695 +msgid "Stock item with this serial number already exists" +msgstr "" + +#: part/models.py:800 +msgid "Duplicate IPN not allowed in part settings" +msgstr "" + +#: part/models.py:810 +msgid "Part with this Name, IPN and Revision already exists." +msgstr "" + +#: part/models.py:825 +msgid "Parts cannot be assigned to structural part categories!" +msgstr "" + +#: part/models.py:854 part/models.py:3896 +msgid "Part name" +msgstr "" + +#: part/models.py:859 +msgid "Is Template" +msgstr "" + +#: part/models.py:860 +msgid "Is this part a template part?" +msgstr "" + +#: part/models.py:870 +msgid "Is this part a variant of another part?" +msgstr "" + +#: part/models.py:878 +msgid "Part description (optional)" +msgstr "" + +#: part/models.py:886 +msgid "Part keywords to improve visibility in search results" +msgstr "" + +#: part/models.py:896 +msgid "Part category" +msgstr "" + +#: part/models.py:904 +msgid "Internal Part Number" +msgstr "" + +#: part/models.py:911 +msgid "Part revision or version number" +msgstr "" + +#: part/models.py:936 +msgid "Where is this item normally stored?" +msgstr "" + +#: part/models.py:982 part/templates/part/part_base.html:376 +msgid "Default Supplier" +msgstr "" + +#: part/models.py:983 +msgid "Default supplier part" +msgstr "" + +#: part/models.py:990 +msgid "Default Expiry" +msgstr "" + +#: part/models.py:991 +msgid "Expiry time (in days) for stock items of this part" +msgstr "" + +#: part/models.py:1000 +msgid "Minimum allowed stock level" +msgstr "" + +#: part/models.py:1009 +msgid "Units of measure for this part" +msgstr "" + +#: part/models.py:1016 +msgid "Can this part be built from other parts?" +msgstr "" + +#: part/models.py:1022 +msgid "Can this part be used to build other parts?" +msgstr "" + +#: part/models.py:1028 +msgid "Does this part have tracking for unique items?" +msgstr "" + +#: part/models.py:1034 +msgid "Can this part be purchased from external suppliers?" +msgstr "" + +#: part/models.py:1040 +msgid "Can this part be sold to customers?" +msgstr "" + +#: part/models.py:1044 +msgid "Is this part active?" +msgstr "" + +#: part/models.py:1050 +msgid "Is this a virtual part, such as a software product or license?" +msgstr "" + +#: part/models.py:1056 +msgid "BOM checksum" +msgstr "" + +#: part/models.py:1057 +msgid "Stored BOM checksum" +msgstr "" + +#: part/models.py:1065 +msgid "BOM checked by" +msgstr "" + +#: part/models.py:1070 +msgid "BOM checked date" +msgstr "" + +#: part/models.py:1086 +msgid "Creation User" +msgstr "" + +#: part/models.py:1096 +msgid "Owner responsible for this part" +msgstr "" + +#: part/models.py:1101 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:1974 +msgid "Sell multiple" +msgstr "" + +#: part/models.py:2993 +msgid "Currency used to cache pricing calculations" +msgstr "" + +#: part/models.py:3009 +msgid "Minimum BOM Cost" +msgstr "" + +#: part/models.py:3010 +msgid "Minimum cost of component parts" +msgstr "" + +#: part/models.py:3016 +msgid "Maximum BOM Cost" +msgstr "" + +#: part/models.py:3017 +msgid "Maximum cost of component parts" +msgstr "" + +#: part/models.py:3023 +msgid "Minimum Purchase Cost" +msgstr "" + +#: part/models.py:3024 +msgid "Minimum historical purchase cost" +msgstr "" + +#: part/models.py:3030 +msgid "Maximum Purchase Cost" +msgstr "" + +#: part/models.py:3031 +msgid "Maximum historical purchase cost" +msgstr "" + +#: part/models.py:3037 +msgid "Minimum Internal Price" +msgstr "" + +#: part/models.py:3038 +msgid "Minimum cost based on internal price breaks" +msgstr "" + +#: part/models.py:3044 +msgid "Maximum Internal Price" +msgstr "" + +#: part/models.py:3045 +msgid "Maximum cost based on internal price breaks" +msgstr "" + +#: part/models.py:3051 +msgid "Minimum Supplier Price" +msgstr "" + +#: part/models.py:3052 +msgid "Minimum price of part from external suppliers" +msgstr "" + +#: part/models.py:3058 +msgid "Maximum Supplier Price" +msgstr "" + +#: part/models.py:3059 +msgid "Maximum price of part from external suppliers" +msgstr "" + +#: part/models.py:3065 +msgid "Minimum Variant Cost" +msgstr "" + +#: part/models.py:3066 +msgid "Calculated minimum cost of variant parts" +msgstr "" + +#: part/models.py:3072 +msgid "Maximum Variant Cost" +msgstr "" + +#: part/models.py:3073 +msgid "Calculated maximum cost of variant parts" +msgstr "" + +#: part/models.py:3080 +msgid "Override minimum cost" +msgstr "" + +#: part/models.py:3087 +msgid "Override maximum cost" +msgstr "" + +#: part/models.py:3094 +msgid "Calculated overall minimum cost" +msgstr "" + +#: part/models.py:3101 +msgid "Calculated overall maximum cost" +msgstr "" + +#: part/models.py:3107 +msgid "Minimum Sale Price" +msgstr "" + +#: part/models.py:3108 +msgid "Minimum sale price based on price breaks" +msgstr "" + +#: part/models.py:3114 +msgid "Maximum Sale Price" +msgstr "" + +#: part/models.py:3115 +msgid "Maximum sale price based on price breaks" +msgstr "" + +#: part/models.py:3121 +msgid "Minimum Sale Cost" +msgstr "" + +#: part/models.py:3122 +msgid "Minimum historical sale price" +msgstr "" + +#: part/models.py:3128 +msgid "Maximum Sale Cost" +msgstr "" + +#: part/models.py:3129 +msgid "Maximum historical sale price" +msgstr "" + +#: part/models.py:3148 +msgid "Part for stocktake" +msgstr "" + +#: part/models.py:3153 +msgid "Item Count" +msgstr "" + +#: part/models.py:3154 +msgid "Number of individual stock entries at time of stocktake" +msgstr "" + +#: part/models.py:3162 +msgid "Total available stock at time of stocktake" +msgstr "" + +#: part/models.py:3166 part/models.py:3249 +#: part/templates/part/part_scheduling.html:13 +#: report/templates/report/inventree_test_report_base.html:106 +#: templates/InvenTree/settings/plugin_settings.html:37 +#: templates/InvenTree/settings/settings_staff_js.html:540 +#: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 +#: templates/js/translated/pricing.js:950 +#: templates/js/translated/purchase_order.js:1732 +#: templates/js/translated/stock.js:2821 +msgid "Date" +msgstr "" + +#: part/models.py:3167 +msgid "Date stocktake was performed" +msgstr "" + +#: part/models.py:3175 +msgid "Additional notes" +msgstr "" + +#: part/models.py:3185 +msgid "User who performed this stocktake" +msgstr "" + +#: part/models.py:3191 +msgid "Minimum Stock Cost" +msgstr "" + +#: part/models.py:3192 +msgid "Estimated minimum cost of stock on hand" +msgstr "" + +#: part/models.py:3198 +msgid "Maximum Stock Cost" +msgstr "" + +#: part/models.py:3199 +msgid "Estimated maximum cost of stock on hand" +msgstr "" + +#: part/models.py:3255 templates/InvenTree/settings/settings_staff_js.html:529 +msgid "Report" +msgstr "" + +#: part/models.py:3256 +msgid "Stocktake report file (generated internally)" +msgstr "" + +#: part/models.py:3261 templates/InvenTree/settings/settings_staff_js.html:536 +msgid "Part Count" +msgstr "" + +#: part/models.py:3262 +msgid "Number of parts covered by stocktake" +msgstr "" + +#: part/models.py:3272 +msgid "User who requested this stocktake report" +msgstr "" + +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 +msgid "Test templates can only be created for trackable parts" +msgstr "" + +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" +msgstr "" + +#: part/models.py:3473 templates/js/translated/part.js:2879 +msgid "Test Name" +msgstr "" + +#: part/models.py:3474 +msgid "Enter a name for the test" +msgstr "" + +#: part/models.py:3480 +msgid "Test Key" +msgstr "" + +#: part/models.py:3481 +msgid "Simplified key for the test" +msgstr "" + +#: part/models.py:3488 +msgid "Test Description" +msgstr "" + +#: part/models.py:3489 +msgid "Enter description for this test" +msgstr "" + +#: part/models.py:3493 +msgid "Is this test enabled?" +msgstr "" + +#: part/models.py:3498 templates/js/translated/part.js:2908 +#: templates/js/translated/table_filters.js:477 +msgid "Required" +msgstr "" + +#: part/models.py:3499 +msgid "Is this test required to pass?" +msgstr "" + +#: part/models.py:3504 templates/js/translated/part.js:2916 +msgid "Requires Value" +msgstr "" + +#: part/models.py:3505 +msgid "Does this test require a value when adding a test result?" +msgstr "" + +#: part/models.py:3510 templates/js/translated/part.js:2923 +msgid "Requires Attachment" +msgstr "" + +#: part/models.py:3512 +msgid "Does this test require a file attachment when adding a test result?" +msgstr "" + +#: part/models.py:3559 +msgid "Checkbox parameters cannot have units" +msgstr "" + +#: part/models.py:3564 +msgid "Checkbox parameters cannot have choices" +msgstr "" + +#: part/models.py:3584 +msgid "Choices must be unique" +msgstr "" + +#: part/models.py:3601 +msgid "Parameter template name must be unique" +msgstr "" + +#: part/models.py:3616 +msgid "Parameter Name" +msgstr "" + +#: part/models.py:3623 +msgid "Physical units for this parameter" +msgstr "" + +#: part/models.py:3631 +msgid "Parameter description" +msgstr "" + +#: part/models.py:3637 templates/js/translated/part.js:1627 +#: templates/js/translated/table_filters.js:821 +msgid "Checkbox" +msgstr "" + +#: part/models.py:3638 +msgid "Is this parameter a checkbox?" +msgstr "" + +#: part/models.py:3643 templates/js/translated/part.js:1636 +msgid "Choices" +msgstr "" + +#: part/models.py:3644 +msgid "Valid choices for this parameter (comma-separated)" +msgstr "" + +#: part/models.py:3721 +msgid "Invalid choice for parameter value" +msgstr "" + +#: part/models.py:3764 +msgid "Parent Part" +msgstr "" + +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 +#: templates/InvenTree/settings/settings_staff_js.html:295 +msgid "Parameter Template" +msgstr "" + +#: part/models.py:3777 +msgid "Data" +msgstr "" + +#: part/models.py:3778 +msgid "Parameter Value" +msgstr "" + +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 +msgid "Default Value" +msgstr "" + +#: part/models.py:3856 +msgid "Default Parameter Value" +msgstr "" + +#: part/models.py:3894 +msgid "Part ID or part name" +msgstr "" + +#: part/models.py:3895 +msgid "Unique part ID value" +msgstr "" + +#: part/models.py:3897 +msgid "Part IPN value" +msgstr "" + +#: part/models.py:3898 +msgid "Level" +msgstr "" + +#: part/models.py:3898 +msgid "BOM level" +msgstr "" + +#: part/models.py:3988 +msgid "Select parent part" +msgstr "" + +#: part/models.py:3998 +msgid "Sub part" +msgstr "" + +#: part/models.py:3999 +msgid "Select part to be used in BOM" +msgstr "" + +#: part/models.py:4010 +msgid "BOM quantity for this BOM item" +msgstr "" + +#: part/models.py:4016 +msgid "This BOM item is optional" +msgstr "" + +#: part/models.py:4022 +msgid "This BOM item is consumable (it is not tracked in build orders)" +msgstr "" + +#: part/models.py:4029 part/templates/part/upload_bom.html:55 +msgid "Overage" +msgstr "" + +#: part/models.py:4030 +msgid "Estimated build wastage quantity (absolute or percentage)" +msgstr "" + +#: part/models.py:4037 +msgid "BOM item reference" +msgstr "" + +#: part/models.py:4045 +msgid "BOM item notes" +msgstr "" + +#: part/models.py:4051 +msgid "Checksum" +msgstr "" + +#: part/models.py:4052 +msgid "BOM line checksum" +msgstr "" + +#: part/models.py:4057 templates/js/translated/table_filters.js:174 +msgid "Validated" +msgstr "" + +#: part/models.py:4058 +msgid "This BOM item has been validated" +msgstr "" + +#: part/models.py:4063 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:4064 +msgid "This BOM item is inherited by BOMs for variant parts" +msgstr "" + +#: part/models.py:4069 part/templates/part/upload_bom.html:56 +#: templates/js/translated/bom.js:1046 +msgid "Allow Variants" +msgstr "" + +#: part/models.py:4070 +msgid "Stock items for variant parts can be used for this BOM item" +msgstr "" + +#: part/models.py:4155 stock/models.py:649 +msgid "Quantity must be integer value for trackable parts" +msgstr "" + +#: part/models.py:4165 part/models.py:4167 +msgid "Sub part must be specified" +msgstr "" + +#: part/models.py:4307 +msgid "BOM Item Substitute" +msgstr "" + +#: part/models.py:4328 +msgid "Substitute part cannot be the same as the master part" +msgstr "" + +#: part/models.py:4341 +msgid "Parent BOM item" +msgstr "" + +#: part/models.py:4349 +msgid "Substitute part" +msgstr "" + +#: part/models.py:4365 +msgid "Part 1" +msgstr "" + +#: part/models.py:4373 +msgid "Part 2" +msgstr "" + +#: part/models.py:4374 +msgid "Select Related Part" +msgstr "" + +#: part/models.py:4393 +msgid "Part relationship cannot be created between a part and itself" +msgstr "" + +#: part/models.py:4398 +msgid "Duplicate relationship already exists" +msgstr "" + +#: part/serializers.py:119 part/serializers.py:141 +#: 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 +msgid "Results" +msgstr "" + +#: part/serializers.py:186 +msgid "Number of results recorded against this template" +msgstr "" + +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 +msgid "Purchase currency of this stock item" +msgstr "" + +#: part/serializers.py:273 +msgid "Number of parts using this template" +msgstr "" + +#: part/serializers.py:397 +msgid "No parts selected" +msgstr "" + +#: part/serializers.py:407 +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:478 +msgid "Initial Stock Quantity" +msgstr "" + +#: part/serializers.py:480 +msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." +msgstr "" + +#: part/serializers.py:487 +msgid "Initial Stock Location" +msgstr "" + +#: part/serializers.py:488 +msgid "Specify initial stock location for this Part" +msgstr "" + +#: part/serializers.py:500 +msgid "Select supplier (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:516 +msgid "Select manufacturer (or leave blank to skip)" +msgstr "" + +#: part/serializers.py:526 +msgid "Manufacturer part number" +msgstr "" + +#: part/serializers.py:533 +msgid "Selected company is not a valid supplier" +msgstr "" + +#: part/serializers.py:542 +msgid "Selected company is not a valid manufacturer" +msgstr "" + +#: part/serializers.py:553 +msgid "Manufacturer part matching this MPN already exists" +msgstr "" + +#: part/serializers.py:560 +msgid "Supplier part matching this SKU already exists" +msgstr "" + +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 +#: templates/js/translated/part.js:471 +msgid "Duplicate Part" +msgstr "" + +#: part/serializers.py:852 +msgid "Copy initial data from another Part" +msgstr "" + +#: part/serializers.py:858 templates/js/translated/part.js:102 +msgid "Initial Stock" +msgstr "" + +#: part/serializers.py:859 +msgid "Create Part with initial stock quantity" +msgstr "" + +#: part/serializers.py:865 +msgid "Supplier Information" +msgstr "" + +#: part/serializers.py:866 +msgid "Add initial supplier information for this part" +msgstr "" + +#: part/serializers.py:874 +msgid "Copy Category Parameters" +msgstr "" + +#: part/serializers.py:875 +msgid "Copy parameter templates from selected part category" +msgstr "" + +#: part/serializers.py:880 +msgid "Existing Image" +msgstr "" + +#: part/serializers.py:881 +msgid "Filename of an existing part image" +msgstr "" + +#: part/serializers.py:898 +msgid "Image file does not exist" +msgstr "" + +#: part/serializers.py:1104 +msgid "Limit stocktake report to a particular part, and any variant parts" +msgstr "" + +#: part/serializers.py:1114 +msgid "Limit stocktake report to a particular part category, and any child categories" +msgstr "" + +#: part/serializers.py:1124 +msgid "Limit stocktake report to a particular stock location, and any child locations" +msgstr "" + +#: part/serializers.py:1130 +msgid "Exclude External Stock" +msgstr "" + +#: part/serializers.py:1131 +msgid "Exclude stock items in external locations" +msgstr "" + +#: part/serializers.py:1136 +msgid "Generate Report" +msgstr "" + +#: part/serializers.py:1137 +msgid "Generate report file containing calculated stocktake data" +msgstr "" + +#: part/serializers.py:1142 +msgid "Update Parts" +msgstr "" + +#: part/serializers.py:1143 +msgid "Update specified parts with calculated stocktake data" +msgstr "" + +#: part/serializers.py:1151 +msgid "Stocktake functionality is not enabled" +msgstr "" + +#: part/serializers.py:1257 +msgid "Override calculated value for minimum price" +msgstr "" + +#: part/serializers.py:1264 +msgid "Minimum price currency" +msgstr "" + +#: part/serializers.py:1272 +msgid "Override calculated value for maximum price" +msgstr "" + +#: part/serializers.py:1279 +msgid "Maximum price currency" +msgstr "" + +#: part/serializers.py:1308 +msgid "Update" +msgstr "" + +#: part/serializers.py:1309 +msgid "Update pricing for this part" +msgstr "" + +#: part/serializers.py:1332 +#, python-brace-format +msgid "Could not convert from provided currencies to {default_currency}" +msgstr "" + +#: part/serializers.py:1339 +msgid "Minimum price must not be greater than maximum price" +msgstr "" + +#: part/serializers.py:1342 +msgid "Maximum price must not be less than minimum price" +msgstr "" + +#: part/serializers.py:1678 +msgid "Select part to copy BOM from" +msgstr "" + +#: part/serializers.py:1686 +msgid "Remove Existing Data" +msgstr "" + +#: part/serializers.py:1687 +msgid "Remove existing BOM items before copying" +msgstr "" + +#: part/serializers.py:1692 +msgid "Include Inherited" +msgstr "" + +#: part/serializers.py:1693 +msgid "Include BOM items which are inherited from templated parts" +msgstr "" + +#: part/serializers.py:1698 +msgid "Skip Invalid Rows" +msgstr "" + +#: part/serializers.py:1699 +msgid "Enable this option to skip invalid rows" +msgstr "" + +#: part/serializers.py:1704 +msgid "Copy Substitute Parts" +msgstr "" + +#: part/serializers.py:1705 +msgid "Copy substitute parts when duplicate BOM items" +msgstr "" + +#: part/serializers.py:1739 +msgid "Clear Existing BOM" +msgstr "" + +#: part/serializers.py:1740 +msgid "Delete existing BOM items before uploading" +msgstr "" + +#: part/serializers.py:1770 +msgid "No part column specified" +msgstr "" + +#: part/serializers.py:1814 +msgid "Multiple matching parts found" +msgstr "" + +#: part/serializers.py:1817 +msgid "No matching part found" +msgstr "" + +#: part/serializers.py:1820 +msgid "Part is not designated as a component" +msgstr "" + +#: part/serializers.py:1829 +msgid "Quantity not provided" +msgstr "" + +#: part/serializers.py:1837 +msgid "Invalid quantity" +msgstr "" + +#: part/serializers.py:1858 +msgid "At least one BOM item is required" +msgstr "" + +#: part/stocktake.py:224 templates/js/translated/part.js:1066 +#: templates/js/translated/part.js:1821 templates/js/translated/part.js:1877 +#: templates/js/translated/purchase_order.js:2085 +msgid "Total Quantity" +msgstr "" + +#: part/stocktake.py:225 +msgid "Total Cost Min" +msgstr "" + +#: part/stocktake.py:226 +msgid "Total Cost Max" +msgstr "" + +#: part/stocktake.py:284 +msgid "Stocktake Report Available" +msgstr "" + +#: part/stocktake.py:285 +msgid "A new stocktake report is available for download" +msgstr "" + +#: part/tasks.py:37 +msgid "Low stock notification" +msgstr "" + +#: part/tasks.py:39 +#, python-brace-format +msgid "The available stock for {part.name} has fallen below the configured minimum level" +msgstr "" + +#: part/templates/part/bom.html:6 +msgid "You do not have permission to edit the BOM." +msgstr "" + +#: part/templates/part/bom.html:15 +msgid "The BOM this part has been changed, and must be validated" +msgstr "" + +#: part/templates/part/bom.html:17 +#, python-format +msgid "This BOM was last checked by %(checker)s on %(check_date)s" +msgstr "" + +#: part/templates/part/bom.html:21 +msgid "This BOM has not been validated." +msgstr "" + +#: part/templates/part/category.html:35 +msgid "Perform stocktake for this part category" +msgstr "" + +#: part/templates/part/category.html:41 part/templates/part/category.html:45 +msgid "You are subscribed to notifications for this category" +msgstr "" + +#: part/templates/part/category.html:49 +msgid "Subscribe to notifications for this category" +msgstr "" + +#: part/templates/part/category.html:55 +msgid "Category Actions" +msgstr "" + +#: part/templates/part/category.html:60 +msgid "Edit category" +msgstr "" + +#: part/templates/part/category.html:61 +msgid "Edit Category" +msgstr "" + +#: part/templates/part/category.html:65 +msgid "Delete category" +msgstr "" + +#: part/templates/part/category.html:66 +msgid "Delete Category" +msgstr "" + +#: part/templates/part/category.html:102 +msgid "Top level part category" +msgstr "" + +#: part/templates/part/category.html:127 +msgid "Parts (Including subcategories)" +msgstr "" + +#: part/templates/part/category.html:165 +msgid "Create new part" +msgstr "" + +#: part/templates/part/category.html:166 templates/js/translated/bom.js:444 +msgid "New Part" +msgstr "" + +#: part/templates/part/category.html:192 +#: templates/InvenTree/settings/part_parameters.html:7 +#: templates/InvenTree/settings/sidebar.html:49 +msgid "Part Parameters" +msgstr "" + +#: part/templates/part/category.html:211 +msgid "Create new part category" +msgstr "" + +#: part/templates/part/category.html:212 +msgid "New Category" +msgstr "" + +#: part/templates/part/category_sidebar.html:13 +msgid "Import Parts" +msgstr "" + +#: part/templates/part/copy_part.html:10 +#, python-format +msgid "Make a copy of part '%(full_name)s'." +msgstr "" + +#: part/templates/part/copy_part.html:14 +#: part/templates/part/create_part.html:11 +msgid "Possible Matching Parts" +msgstr "" + +#: part/templates/part/copy_part.html:15 +#: part/templates/part/create_part.html:12 +msgid "The new part may be a duplicate of these existing parts" +msgstr "" + +#: part/templates/part/create_part.html:17 +#, python-format +msgid "%(full_name)s - %(desc)s (%(match_per)s%% match)" +msgstr "" + +#: part/templates/part/detail.html:20 +msgid "Part Stock" +msgstr "" + +#: part/templates/part/detail.html:44 +msgid "Refresh scheduling data" +msgstr "" + +#: part/templates/part/detail.html:45 part/templates/part/prices.html:15 +#: templates/js/translated/tables.js:552 +msgid "Refresh" +msgstr "" + +#: part/templates/part/detail.html:66 +msgid "Add stocktake information" +msgstr "" + +#: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 +#: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 +#: templates/InvenTree/settings/sidebar.html:53 +#: templates/js/translated/stock.js:2215 users/models.py:191 +msgid "Stocktake" +msgstr "" + +#: part/templates/part/detail.html:83 +msgid "Part Test Templates" +msgstr "" + +#: part/templates/part/detail.html:88 +msgid "Add Test Template" +msgstr "" + +#: part/templates/part/detail.html:139 stock/templates/stock/item.html:49 +msgid "Sales Order Allocations" +msgstr "" + +#: part/templates/part/detail.html:156 +msgid "Part Notes" +msgstr "" + +#: part/templates/part/detail.html:171 +msgid "Part Variants" +msgstr "" + +#: part/templates/part/detail.html:175 +msgid "Create new variant" +msgstr "" + +#: part/templates/part/detail.html:176 +msgid "New Variant" +msgstr "" + +#: part/templates/part/detail.html:199 +msgid "Add new parameter" +msgstr "" + +#: part/templates/part/detail.html:232 part/templates/part/part_sidebar.html:58 +msgid "Related Parts" +msgstr "" + +#: part/templates/part/detail.html:236 part/templates/part/detail.html:237 +msgid "Add Related" +msgstr "" + +#: part/templates/part/detail.html:255 part/templates/part/part_sidebar.html:17 +#: report/templates/report/inventree_bill_of_materials_report.html:100 +msgid "Bill of Materials" +msgstr "" + +#: part/templates/part/detail.html:260 +msgid "Export actions" +msgstr "" + +#: part/templates/part/detail.html:264 templates/js/translated/bom.js:340 +msgid "Export BOM" +msgstr "" + +#: part/templates/part/detail.html:266 +msgid "Print BOM Report" +msgstr "" + +#: part/templates/part/detail.html:272 +msgid "BOM actions" +msgstr "" + +#: part/templates/part/detail.html:276 +msgid "Upload BOM" +msgstr "" + +#: part/templates/part/detail.html:278 +msgid "Validate BOM" +msgstr "" + +#: part/templates/part/detail.html:283 part/templates/part/detail.html:284 +#: templates/js/translated/bom.js: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:659 +msgid "Related Part" +msgstr "" + +#: part/templates/part/detail.html:667 +msgid "Add Related Part" +msgstr "" + +#: part/templates/part/detail.html:752 +msgid "Add Test Result Template" +msgstr "" + +#: part/templates/part/import_wizard/ajax_part_upload.html:29 +#: part/templates/part/import_wizard/part_upload.html:14 +msgid "Insufficient privileges." +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:8 +msgid "Return to Parts" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:13 +msgid "Import Parts from File" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:31 +msgid "Requirements for part import" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:33 +msgid "The part import file must contain the required named columns as provided in the " +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:33 +msgid "Part Import Template" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:89 +msgid "Download Part Import Template" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:92 +#: templates/js/translated/bom.js:309 templates/js/translated/bom.js:343 +#: templates/js/translated/order.js:129 templates/js/translated/tables.js:189 +msgid "Format" +msgstr "" + +#: part/templates/part/import_wizard/part_upload.html:93 +#: templates/js/translated/bom.js:310 templates/js/translated/bom.js:344 +#: templates/js/translated/order.js:130 +msgid "Select file format" +msgstr "" + +#: part/templates/part/part_app_base.html:12 +msgid "Part List" +msgstr "" + +#: part/templates/part/part_base.html:25 part/templates/part/part_base.html:29 +msgid "You are subscribed to notifications for this part" +msgstr "" + +#: part/templates/part/part_base.html:33 +msgid "Subscribe to notifications for this part" +msgstr "" + +#: part/templates/part/part_base.html:52 +#: stock/templates/stock/item_base.html:62 +#: stock/templates/stock/location.html:74 +msgid "Print Label" +msgstr "" + +#: part/templates/part/part_base.html:58 +msgid "Show pricing information" +msgstr "" + +#: part/templates/part/part_base.html:63 +#: stock/templates/stock/item_base.html:110 +#: stock/templates/stock/location.html:83 +msgid "Stock actions" +msgstr "" + +#: part/templates/part/part_base.html:70 +msgid "Count part stock" +msgstr "" + +#: part/templates/part/part_base.html:76 +msgid "Transfer part stock" +msgstr "" + +#: part/templates/part/part_base.html:91 templates/js/translated/part.js:2293 +msgid "Part actions" +msgstr "" + +#: part/templates/part/part_base.html:94 +msgid "Duplicate part" +msgstr "" + +#: part/templates/part/part_base.html:97 +msgid "Edit part" +msgstr "" + +#: part/templates/part/part_base.html:100 +msgid "Delete part" +msgstr "" + +#: part/templates/part/part_base.html:119 +msgid "Part is a template part (variants can be made from this part)" +msgstr "" + +#: part/templates/part/part_base.html:123 +msgid "Part can be assembled from other parts" +msgstr "" + +#: part/templates/part/part_base.html:127 +msgid "Part can be used in assemblies" +msgstr "" + +#: part/templates/part/part_base.html:131 +msgid "Part stock is tracked by serial number" +msgstr "" + +#: part/templates/part/part_base.html:135 +msgid "Part can be purchased from external suppliers" +msgstr "" + +#: part/templates/part/part_base.html:139 +msgid "Part can be sold to customers" +msgstr "" + +#: part/templates/part/part_base.html:145 +msgid "Part is not active" +msgstr "" + +#: part/templates/part/part_base.html:146 +#: templates/js/translated/company.js:1277 +#: templates/js/translated/company.js:1565 +#: templates/js/translated/model_renderers.js:306 +#: templates/js/translated/part.js:814 templates/js/translated/part.js:1218 +msgid "Inactive" +msgstr "" + +#: part/templates/part/part_base.html:153 +msgid "Part is virtual (not a physical part)" +msgstr "" + +#: part/templates/part/part_base.html:163 +#: part/templates/part/part_base.html:682 +msgid "Show Part Details" +msgstr "" + +#: part/templates/part/part_base.html:218 +#: stock/templates/stock/item_base.html:388 +msgid "Allocated to Build Orders" +msgstr "" + +#: part/templates/part/part_base.html:227 +#: stock/templates/stock/item_base.html:381 +msgid "Allocated to Sales Orders" +msgstr "" + +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js: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:1264 templates/js/translated/part.js:2444 +#: templates/js/translated/pricing.js:391 +#: templates/js/translated/pricing.js:1054 +msgid "Price Range" +msgstr "" + +#: part/templates/part/part_base.html:352 +msgid "Latest Serial Number" +msgstr "" + +#: part/templates/part/part_base.html:356 +#: stock/templates/stock/item_base.html:322 +msgid "Search for serial number" +msgstr "" + +#: part/templates/part/part_base.html:444 +msgid "Part QR Code" +msgstr "" + +#: part/templates/part/part_base.html:461 +msgid "Link Barcode to Part" +msgstr "" + +#: part/templates/part/part_base.html:512 +msgid "Calculate" +msgstr "" + +#: part/templates/part/part_base.html:529 +msgid "Remove associated image from this part" +msgstr "" + +#: part/templates/part/part_base.html:580 +msgid "No matching images found" +msgstr "" + +#: part/templates/part/part_base.html:676 +msgid "Hide Part Details" +msgstr "" + +#: part/templates/part/part_pricing.html:22 part/templates/part/prices.html:76 +#: part/templates/part/prices.html:227 templates/js/translated/pricing.js:485 +msgid "Supplier Pricing" +msgstr "" + +#: part/templates/part/part_pricing.html:26 +#: part/templates/part/part_pricing.html:52 +#: part/templates/part/part_pricing.html:95 +#: part/templates/part/part_pricing.html:110 +msgid "Unit Cost" +msgstr "" + +#: part/templates/part/part_pricing.html:40 +msgid "No supplier pricing available" +msgstr "" + +#: part/templates/part/part_pricing.html:48 part/templates/part/prices.html:90 +#: part/templates/part/prices.html:250 +msgid "BOM Pricing" +msgstr "" + +#: part/templates/part/part_pricing.html:66 +msgid "Unit Purchase Price" +msgstr "" + +#: part/templates/part/part_pricing.html:72 +msgid "Total Purchase Price" +msgstr "" + +#: part/templates/part/part_pricing.html:83 +msgid "No BOM pricing available" +msgstr "" + +#: part/templates/part/part_pricing.html:92 +msgid "Internal Price" +msgstr "" + +#: part/templates/part/part_pricing.html:123 +msgid "No pricing information is available for this part." +msgstr "" + +#: part/templates/part/part_scheduling.html:14 +msgid "Scheduled Quantity" +msgstr "" + +#: part/templates/part/part_sidebar.html:11 +msgid "Variants" +msgstr "" + +#: part/templates/part/part_sidebar.html:14 +#: stock/templates/stock/loc_link.html:3 stock/templates/stock/location.html:24 +#: stock/templates/stock/stock_app_base.html:10 +#: templates/InvenTree/search.html:153 +#: templates/InvenTree/settings/sidebar.html:51 +#: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 +#: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 +msgid "Stock" +msgstr "" + +#: part/templates/part/part_sidebar.html:30 +#: templates/InvenTree/settings/sidebar.html:39 +msgid "Pricing" +msgstr "" + +#: part/templates/part/part_sidebar.html:44 +msgid "Scheduling" +msgstr "" + +#: part/templates/part/part_sidebar.html:54 +msgid "Test Templates" +msgstr "" + +#: part/templates/part/part_thumb.html:11 +msgid "Select from existing images" +msgstr "" + +#: part/templates/part/prices.html:11 +msgid "Pricing Overview" +msgstr "" + +#: part/templates/part/prices.html:14 +msgid "Refresh Part Pricing" +msgstr "" + +#: part/templates/part/prices.html:17 +msgid "Override Part Pricing" +msgstr "" + +#: part/templates/part/prices.html:18 +#: templates/InvenTree/settings/settings_staff_js.html:80 +#: templates/InvenTree/settings/user.html:24 +#: templates/js/translated/helpers.js:100 +#: templates/js/translated/pricing.js:628 templates/notes_buttons.html:3 +#: templates/notes_buttons.html:4 +msgid "Edit" +msgstr "" + +#: part/templates/part/prices.html:28 stock/admin.py:247 +#: stock/templates/stock/item_base.html:446 +#: templates/js/translated/company.js:1693 +#: templates/js/translated/company.js:1703 +#: templates/js/translated/stock.js:2245 +msgid "Last Updated" +msgstr "" + +#: part/templates/part/prices.html:37 part/templates/part/prices.html:127 +msgid "Price Category" +msgstr "" + +#: part/templates/part/prices.html:38 part/templates/part/prices.html:128 +msgid "Minimum" +msgstr "" + +#: part/templates/part/prices.html:39 part/templates/part/prices.html:129 +msgid "Maximum" +msgstr "" + +#: part/templates/part/prices.html:51 part/templates/part/prices.html:174 +msgid "Internal Pricing" +msgstr "" + +#: part/templates/part/prices.html:64 part/templates/part/prices.html:206 +msgid "Purchase History" +msgstr "" + +#: part/templates/part/prices.html:98 part/templates/part/prices.html:274 +msgid "Variant Pricing" +msgstr "" + +#: part/templates/part/prices.html:106 +msgid "Pricing Overrides" +msgstr "" + +#: part/templates/part/prices.html:113 +msgid "Overall Pricing" +msgstr "" + +#: part/templates/part/prices.html:149 part/templates/part/prices.html:326 +msgid "Sale History" +msgstr "" + +#: part/templates/part/prices.html:157 +msgid "Sale price data is not available for this part" +msgstr "" + +#: part/templates/part/prices.html:164 +msgid "Price range data is not available for this part." +msgstr "" + +#: part/templates/part/prices.html:175 part/templates/part/prices.html:207 +#: part/templates/part/prices.html:228 part/templates/part/prices.html:251 +#: part/templates/part/prices.html:275 part/templates/part/prices.html:298 +#: part/templates/part/prices.html:327 +msgid "Jump to overview" +msgstr "" + +#: part/templates/part/prices.html:180 +msgid "Add Internal Price Break" +msgstr "" + +#: part/templates/part/prices.html:297 +msgid "Sale Pricing" +msgstr "" + +#: part/templates/part/prices.html:303 +msgid "Add Sell Price Break" +msgstr "" + +#: part/templates/part/pricing_javascript.html:24 +msgid "Update Pricing" +msgstr "" + +#: part/templates/part/stock_count.html:7 templates/js/translated/part.js:704 +#: templates/js/translated/part.js:2140 templates/js/translated/part.js:2142 +msgid "No Stock" +msgstr "" + +#: part/templates/part/stock_count.html:9 templates/InvenTree/index.html:120 +msgid "Low Stock" +msgstr "" + +#: part/templates/part/upload_bom.html:8 +msgid "Return to BOM" +msgstr "" + +#: part/templates/part/upload_bom.html:13 +msgid "Upload Bill of Materials" +msgstr "" + +#: part/templates/part/upload_bom.html:19 +msgid "BOM upload requirements" +msgstr "" + +#: part/templates/part/upload_bom.html:23 +#: part/templates/part/upload_bom.html:90 +msgid "Upload BOM File" +msgstr "" + +#: part/templates/part/upload_bom.html:29 +msgid "Submit BOM Data" +msgstr "" + +#: part/templates/part/upload_bom.html:37 +msgid "Requirements for BOM upload" +msgstr "" + +#: part/templates/part/upload_bom.html:39 +msgid "The BOM file must contain the required named columns as provided in the " +msgstr "" + +#: part/templates/part/upload_bom.html:39 +msgid "BOM Upload Template" +msgstr "" + +#: part/templates/part/upload_bom.html:40 +msgid "Each part must already exist in the database" +msgstr "" + +#: part/templates/part/variant_part.html:9 +msgid "Create new part variant" +msgstr "" + +#: part/templates/part/variant_part.html:10 +msgid "Create a new variant part from this template" +msgstr "" + +#: part/views.py:111 +msgid "Match References" +msgstr "" + +#: part/views.py:275 +#, python-brace-format +msgid "Can't import part {new_part.name} because there is no category assigned" +msgstr "" + +#: part/views.py:425 +msgid "Select Part Image" +msgstr "" + +#: part/views.py:448 +msgid "Updated part image" +msgstr "" + +#: part/views.py:451 +msgid "Part image not found" +msgstr "" + +#: part/views.py:545 +msgid "Part Pricing" +msgstr "" + +#: plugin/api.py:168 +msgid "Plugin cannot be deleted as it is currently active" +msgstr "" + +#: plugin/base/action/api.py:32 +msgid "No action specified" +msgstr "" + +#: plugin/base/action/api.py:41 +msgid "No matching action found" +msgstr "" + +#: plugin/base/barcodes/api.py:124 plugin/base/barcodes/api.py:328 +#: plugin/base/barcodes/api.py:503 +msgid "No match found for barcode data" +msgstr "" + +#: plugin/base/barcodes/api.py:128 +msgid "Match found for barcode data" +msgstr "" + +#: plugin/base/barcodes/api.py:154 +#: templates/js/translated/purchase_order.js: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:2590 +#: templates/js/translated/sales_order.js:1917 +msgid "Insufficient stock available" +msgstr "" + +#: plugin/base/barcodes/api.py:559 +msgid "Stock item allocated to sales order" +msgstr "" + +#: plugin/base/barcodes/api.py:563 +msgid "Not enough information" +msgstr "" + +#: plugin/base/barcodes/mixins.py:147 plugin/base/barcodes/mixins.py:179 +msgid "Found multiple matching supplier parts for barcode" +msgstr "" + +#: plugin/base/barcodes/mixins.py:197 +#, python-brace-format +msgid "Found multiple purchase orders matching '{order}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:201 +#, python-brace-format +msgid "No matching purchase order for '{order}'" +msgstr "" + +#: plugin/base/barcodes/mixins.py:207 +msgid "Purchase order does not match supplier" +msgstr "" + +#: plugin/base/barcodes/mixins.py:441 +msgid "Failed to find pending line item for supplier part" +msgstr "" + +#: plugin/base/barcodes/mixins.py:472 +msgid "Further information required to receive line item" +msgstr "" + +#: plugin/base/barcodes/mixins.py:480 +msgid "Received purchase order line item" +msgstr "" + +#: plugin/base/barcodes/serializers.py:21 +msgid "Scanned barcode data" +msgstr "" + +#: plugin/base/barcodes/serializers.py:81 +msgid "Purchase Order to allocate items against" +msgstr "" + +#: plugin/base/barcodes/serializers.py:87 +msgid "Purchase order is not pending" +msgstr "" + +#: plugin/base/barcodes/serializers.py:105 +msgid "PurchaseOrder to receive items against" +msgstr "" + +#: plugin/base/barcodes/serializers.py:111 +msgid "Purchase order has not been placed" +msgstr "" + +#: plugin/base/barcodes/serializers.py:119 +msgid "Location to receive items into" +msgstr "" + +#: plugin/base/barcodes/serializers.py:125 +msgid "Cannot select a structural location" +msgstr "" + +#: plugin/base/barcodes/serializers.py:139 +msgid "Sales Order to allocate items against" +msgstr "" + +#: plugin/base/barcodes/serializers.py:145 +msgid "Sales order is not pending" +msgstr "" + +#: plugin/base/barcodes/serializers.py:153 +msgid "Sales order line item to allocate items against" +msgstr "" + +#: plugin/base/barcodes/serializers.py:160 +msgid "Sales order shipment to allocate items against" +msgstr "" + +#: plugin/base/barcodes/serializers.py:166 +msgid "Shipment has already been delivered" +msgstr "" + +#: plugin/base/barcodes/serializers.py:171 +msgid "Quantity to allocate" +msgstr "" + +#: plugin/base/label/label.py:39 +msgid "Label printing failed" +msgstr "" + +#: plugin/base/label/mixins.py:63 +msgid "Error rendering label to PDF" +msgstr "" + +#: plugin/base/label/mixins.py:76 +msgid "Error rendering label to HTML" +msgstr "" + +#: plugin/base/label/mixins.py:111 +msgid "Error rendering label to PNG" +msgstr "" + +#: plugin/builtin/barcodes/inventree_barcode.py:25 +msgid "InvenTree Barcodes" +msgstr "" + +#: plugin/builtin/barcodes/inventree_barcode.py:26 +msgid "Provides native support for barcodes" +msgstr "" + +#: plugin/builtin/barcodes/inventree_barcode.py:28 +#: plugin/builtin/integration/core_notifications.py:35 +#: plugin/builtin/integration/currency_exchange.py:21 +#: plugin/builtin/labels/inventree_label.py:23 +#: plugin/builtin/labels/inventree_machine.py:64 +#: plugin/builtin/labels/label_sheet.py:63 +#: plugin/builtin/suppliers/digikey.py:19 plugin/builtin/suppliers/lcsc.py:21 +#: plugin/builtin/suppliers/mouser.py:19 plugin/builtin/suppliers/tme.py:21 +msgid "InvenTree contributors" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:34 +msgid "InvenTree Notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:36 +msgid "Integrated outgoing notification methods" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:41 +#: plugin/builtin/integration/core_notifications.py:80 +msgid "Enable email notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:42 +#: plugin/builtin/integration/core_notifications.py:81 +msgid "Allow sending of emails for event notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:47 +msgid "Enable slack notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:49 +msgid "Allow sending of slack channel messages for event notifications" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:55 +msgid "Slack incoming webhook url" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:56 +msgid "URL that is used to send messages to a slack channel" +msgstr "" + +#: plugin/builtin/integration/core_notifications.py:164 +msgid "Open link" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:22 +msgid "InvenTree Currency Exchange" +msgstr "" + +#: plugin/builtin/integration/currency_exchange.py:23 +msgid "Default currency exchange integration" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:20 +msgid "InvenTree PDF label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:21 +msgid "Provides native support for printing PDF labels" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:29 +msgid "Debug mode" +msgstr "" + +#: plugin/builtin/labels/inventree_label.py:30 +msgid "Enable debug mode - returns raw HTML instead of PDF" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:61 +msgid "InvenTree machine label printer" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:62 +msgid "Provides support for printing using a machine" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:150 +msgid "last used" +msgstr "" + +#: plugin/builtin/labels/inventree_machine.py:167 +msgid "Options" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:29 +msgid "Page size for the label sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:34 +msgid "Skip Labels" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:35 +msgid "Skip this number of labels when printing label sheets" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:41 +msgid "Border" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:42 +msgid "Print a border around each label" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 +msgid "Landscape" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:48 +msgid "Print the label sheet in landscape mode" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:60 +msgid "InvenTree Label Sheet Printer" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:61 +msgid "Arrays multiple labels onto a single sheet" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:94 +msgid "Label is too large for page size" +msgstr "" + +#: plugin/builtin/labels/label_sheet.py:128 +msgid "No labels were generated" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:16 +msgid "Supplier Integration - DigiKey" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:17 +msgid "Provides support for scanning DigiKey barcodes" +msgstr "" + +#: plugin/builtin/suppliers/digikey.py:26 +msgid "The Supplier which acts as 'DigiKey'" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:18 +msgid "Supplier Integration - LCSC" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:19 +msgid "Provides support for scanning LCSC barcodes" +msgstr "" + +#: plugin/builtin/suppliers/lcsc.py:27 +msgid "The Supplier which acts as 'LCSC'" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:16 +msgid "Supplier Integration - Mouser" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:17 +msgid "Provides support for scanning Mouser barcodes" +msgstr "" + +#: plugin/builtin/suppliers/mouser.py:25 +msgid "The Supplier which acts as 'Mouser'" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:18 +msgid "Supplier Integration - TME" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:19 +msgid "Provides support for scanning TME barcodes" +msgstr "" + +#: plugin/builtin/suppliers/tme.py:27 +msgid "The Supplier which acts as 'TME'" +msgstr "" + +#: plugin/installer.py:194 plugin/installer.py: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:30 +msgid "Plugin Configuration" +msgstr "" + +#: plugin/models.py:31 +msgid "Plugin Configurations" +msgstr "" + +#: plugin/models.py:34 users/models.py:89 +msgid "Key" +msgstr "" + +#: plugin/models.py:34 +msgid "Key of plugin" +msgstr "" + +#: plugin/models.py:42 +msgid "PluginName of the plugin" +msgstr "" + +#: plugin/models.py:49 plugin/serializers.py:90 +msgid "Package Name" +msgstr "" + +#: plugin/models.py:51 +msgid "Name of the installed package, if the plugin was installed via PIP" +msgstr "" + +#: plugin/models.py:56 +msgid "Is the plugin active" +msgstr "" + +#: plugin/models.py:148 templates/js/translated/table_filters.js:370 +#: templates/js/translated/table_filters.js:504 +msgid "Installed" +msgstr "" + +#: plugin/models.py:157 +msgid "Sample plugin" +msgstr "" + +#: plugin/models.py:165 +msgid "Builtin Plugin" +msgstr "" + +#: plugin/models.py:173 +msgid "Package Plugin" +msgstr "" + +#: plugin/models.py:197 templates/InvenTree/settings/plugin_settings.html:9 +#: templates/js/translated/plugin.js:51 +msgid "Plugin" +msgstr "" + +#: plugin/models.py:244 +msgid "Method" +msgstr "" + +#: plugin/plugin.py:264 +msgid "No author found" +msgstr "" + +#: plugin/registry.py:589 +#, python-brace-format +msgid "Plugin '{p}' is not compatible with the current InvenTree version {v}" +msgstr "" + +#: plugin/registry.py:592 +#, python-brace-format +msgid "Plugin requires at least version {v}" +msgstr "" + +#: plugin/registry.py:594 +#, python-brace-format +msgid "Plugin requires at most version {v}" +msgstr "" + +#: plugin/samples/integration/sample.py:52 +msgid "Enable PO" +msgstr "" + +#: plugin/samples/integration/sample.py:53 +msgid "Enable PO functionality in InvenTree interface" +msgstr "" + +#: plugin/samples/integration/sample.py:58 +msgid "API Key" +msgstr "" + +#: plugin/samples/integration/sample.py:59 +msgid "Key required for accessing external API" +msgstr "" + +#: plugin/samples/integration/sample.py:63 +msgid "Numerical" +msgstr "" + +#: plugin/samples/integration/sample.py:64 +msgid "A numerical setting" +msgstr "" + +#: plugin/samples/integration/sample.py:69 +msgid "Choice Setting" +msgstr "" + +#: plugin/samples/integration/sample.py:70 +msgid "A setting with multiple choices" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:15 +msgid "Sample currency exchange plugin" +msgstr "" + +#: plugin/samples/integration/sample_currency_exchange.py:18 +msgid "InvenTree Contributors" +msgstr "" + +#: plugin/serializers.py:81 +msgid "Source URL" +msgstr "" + +#: plugin/serializers.py:83 +msgid "Source for the package - this can be a custom registry or a VCS path" +msgstr "" + +#: plugin/serializers.py:92 +msgid "Name for the Plugin Package - can also contain a version indicator" +msgstr "" + +#: plugin/serializers.py:99 +#: templates/InvenTree/settings/plugin_settings.html:42 +#: templates/js/translated/plugin.js:86 +msgid "Version" +msgstr "" + +#: plugin/serializers.py:101 +msgid "Version specifier for the plugin. Leave blank for latest version." +msgstr "" + +#: plugin/serializers.py:106 +msgid "Confirm plugin installation" +msgstr "" + +#: plugin/serializers.py:108 +msgid "This will install this plugin now into the current instance. The instance will go into maintenance." +msgstr "" + +#: plugin/serializers.py:121 +msgid "Installation not confirmed" +msgstr "" + +#: plugin/serializers.py:123 +msgid "Either packagename of URL must be provided" +msgstr "" + +#: plugin/serializers.py:156 +msgid "Full reload" +msgstr "" + +#: plugin/serializers.py:157 +msgid "Perform a full reload of the plugin registry" +msgstr "" + +#: plugin/serializers.py:163 +msgid "Force reload" +msgstr "" + +#: plugin/serializers.py:165 +msgid "Force a reload of the plugin registry, even if it is already loaded" +msgstr "" + +#: plugin/serializers.py:172 +msgid "Collect plugins" +msgstr "" + +#: plugin/serializers.py:173 +msgid "Collect plugins and add them to the registry" +msgstr "" + +#: plugin/serializers.py:195 +msgid "Activate Plugin" +msgstr "" + +#: plugin/serializers.py:196 +msgid "Activate this plugin" +msgstr "" + +#: plugin/serializers.py:219 +msgid "Delete configuration" +msgstr "" + +#: plugin/serializers.py:220 +msgid "Delete the plugin configuration from the database" +msgstr "" + +#: report/api.py:158 +msgid "No valid objects provided to template" +msgstr "" + +#: report/api.py:197 report/api.py:234 +#, python-brace-format +msgid "Template file '{template}' is missing or does not exist" +msgstr "" + +#: report/api.py:319 +msgid "Test report" +msgstr "" + +#: report/helpers.py:15 +msgid "A4" +msgstr "" + +#: report/helpers.py:16 +msgid "A3" +msgstr "" + +#: report/helpers.py:17 +msgid "Legal" +msgstr "" + +#: report/helpers.py:18 +msgid "Letter" +msgstr "" + +#: report/models.py:176 +msgid "Template name" +msgstr "" + +#: report/models.py:182 +msgid "Report template file" +msgstr "" + +#: report/models.py:189 +msgid "Report template description" +msgstr "" + +#: report/models.py:195 +msgid "Report revision number (auto-increments)" +msgstr "" + +#: report/models.py:203 +msgid "Page size for PDF reports" +msgstr "" + +#: report/models.py:209 +msgid "Render report in landscape orientation" +msgstr "" + +#: report/models.py:317 +msgid "Pattern for generating report filenames" +msgstr "" + +#: report/models.py:324 +msgid "Report template is enabled" +msgstr "" + +#: report/models.py:346 +msgid "StockItem query filters (comma-separated list of key=value pairs)" +msgstr "" + +#: report/models.py:353 +msgid "Include Installed Tests" +msgstr "" + +#: report/models.py:355 +msgid "Include test results for stock items installed inside assembled item" +msgstr "" + +#: report/models.py:423 +msgid "Build Filters" +msgstr "" + +#: report/models.py:424 +msgid "Build query filters (comma-separated list of key=value pairs" +msgstr "" + +#: report/models.py:463 +msgid "Part Filters" +msgstr "" + +#: report/models.py:464 +msgid "Part query filters (comma-separated list of key=value pairs" +msgstr "" + +#: report/models.py:496 +msgid "Purchase order query filters" +msgstr "" + +#: report/models.py:532 +msgid "Sales order query filters" +msgstr "" + +#: report/models.py:568 +msgid "Return order query filters" +msgstr "" + +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 +msgid "Snippet" +msgstr "" + +#: report/models.py:648 +msgid "Report snippet file" +msgstr "" + +#: report/models.py:655 +msgid "Snippet file description" +msgstr "" + +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 +msgid "Asset" +msgstr "" + +#: report/models.py:722 +msgid "Report asset file" +msgstr "" + +#: report/models.py:729 +msgid "Asset file description" +msgstr "" + +#: report/models.py:751 +msgid "stock location query filters (comma-separated list of key=value pairs)" +msgstr "" + +#: report/templates/report/inventree_bill_of_materials_report.html:133 +msgid "Materials needed" +msgstr "" + +#: report/templates/report/inventree_build_order_base.html:146 +msgid "Required For" +msgstr "" + +#: report/templates/report/inventree_po_report_base.html:15 +msgid "Supplier was deleted" +msgstr "" + +#: report/templates/report/inventree_po_report_base.html:30 +#: report/templates/report/inventree_so_report_base.html:30 +#: templates/js/translated/order.js:316 templates/js/translated/pricing.js:527 +#: templates/js/translated/pricing.js:596 +#: templates/js/translated/pricing.js:834 +#: templates/js/translated/purchase_order.js:2116 +#: templates/js/translated/sales_order.js:1837 +msgid "Unit Price" +msgstr "" + +#: report/templates/report/inventree_po_report_base.html:55 +#: report/templates/report/inventree_return_order_report_base.html:48 +#: report/templates/report/inventree_so_report_base.html:55 +msgid "Extra Line Items" +msgstr "" + +#: report/templates/report/inventree_po_report_base.html:72 +#: report/templates/report/inventree_so_report_base.html:72 +#: templates/js/translated/purchase_order.js:2018 +#: templates/js/translated/sales_order.js:1806 +msgid "Total" +msgstr "" + +#: report/templates/report/inventree_return_order_report_base.html:25 +#: report/templates/report/inventree_test_report_base.html:88 +#: stock/models.py:812 stock/templates/stock/item_base.html:311 +#: templates/js/translated/build.js:519 templates/js/translated/build.js:1364 +#: templates/js/translated/build.js:2353 +#: templates/js/translated/model_renderers.js:224 +#: templates/js/translated/return_order.js:540 +#: templates/js/translated/return_order.js:724 +#: templates/js/translated/sales_order.js:315 +#: templates/js/translated/sales_order.js:1611 +#: templates/js/translated/sales_order.js:1696 +#: templates/js/translated/stock.js:596 +msgid "Serial Number" +msgstr "" + +#: report/templates/report/inventree_slr_report.html:97 +msgid "Stock location items" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:21 +msgid "Stock Item Test Report" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:97 +msgid "Test Results" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:102 +#: templates/js/translated/stock.js:1492 +msgid "Test" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:103 +#: stock/models.py:2435 +msgid "Result" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:130 +msgid "Pass" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:132 +msgid "Fail" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:139 +msgid "No result (required)" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:141 +msgid "No result" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:154 +#: stock/templates/stock/stock_sidebar.html:16 +msgid "Installed Items" +msgstr "" + +#: report/templates/report/inventree_test_report_base.html:168 +#: stock/admin.py:162 templates/js/translated/stock.js:700 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js: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:52 stock/admin.py:172 +msgid "Location ID" +msgstr "" + +#: stock/admin.py:54 stock/admin.py:176 +msgid "Location Name" +msgstr "" + +#: stock/admin.py:64 stock/templates/stock/location.html:131 +#: stock/templates/stock/location.html:137 +msgid "Location Path" +msgstr "" + +#: stock/admin.py:149 +msgid "Stock Item ID" +msgstr "" + +#: stock/admin.py:168 +msgid "Status Code" +msgstr "" + +#: stock/admin.py:180 +msgid "Supplier Part ID" +msgstr "" + +#: stock/admin.py:185 +msgid "Supplier ID" +msgstr "" + +#: stock/admin.py:191 +msgid "Supplier Name" +msgstr "" + +#: stock/admin.py:196 +msgid "Customer ID" +msgstr "" + +#: stock/admin.py:201 stock/models.py:792 +#: stock/templates/stock/item_base.html:354 +msgid "Installed In" +msgstr "" + +#: stock/admin.py:206 +msgid "Build ID" +msgstr "" + +#: stock/admin.py:216 +msgid "Sales Order ID" +msgstr "" + +#: stock/admin.py:221 +msgid "Purchase Order ID" +msgstr "" + +#: stock/admin.py:236 +msgid "Review Needed" +msgstr "" + +#: stock/admin.py:241 +msgid "Delete on Deplete" +msgstr "" + +#: stock/admin.py:256 stock/models.py:886 +#: stock/templates/stock/item_base.html:433 +#: templates/js/translated/stock.js:2229 users/models.py:113 +msgid "Expiry Date" +msgstr "" + +#: stock/api.py:281 +msgid "Filter by location depth" +msgstr "" + +#: stock/api.py:301 +msgid "Include sub-locations in filtered results" +msgstr "" + +#: stock/api.py:322 +msgid "Parent Location" +msgstr "" + +#: stock/api.py:323 +msgid "Filter by parent location" +msgstr "" + +#: stock/api.py:568 templates/js/translated/table_filters.js:427 +msgid "External Location" +msgstr "" + +#: stock/api.py:753 +msgid "Part Tree" +msgstr "" + +#: stock/api.py:781 +msgid "Expiry date before" +msgstr "" + +#: stock/api.py:785 +msgid "Expiry date after" +msgstr "" + +#: stock/api.py:788 stock/templates/stock/item_base.html:439 +#: templates/js/translated/table_filters.js:441 +msgid "Stale" +msgstr "" + +#: stock/api.py:874 +msgid "Quantity is required" +msgstr "" + +#: stock/api.py:880 +msgid "Valid part must be supplied" +msgstr "" + +#: stock/api.py:911 +msgid "The given supplier part does not exist" +msgstr "" + +#: stock/api.py:921 +msgid "The supplier part has a pack size defined, but flag use_pack_size not set" +msgstr "" + +#: stock/api.py:952 +msgid "Serial numbers cannot be supplied for a non-trackable part" +msgstr "" + +#: stock/models.py:63 +msgid "Stock Location type" +msgstr "" + +#: stock/models.py:64 +msgid "Stock Location types" +msgstr "" + +#: stock/models.py:90 +msgid "Default icon for all locations that have no icon set (optional)" +msgstr "" + +#: stock/models.py:125 stock/models.py:774 +#: stock/templates/stock/location.html:17 +#: stock/templates/stock/stock_app_base.html:8 +msgid "Stock Location" +msgstr "" + +#: stock/models.py:126 stock/templates/stock/location.html:179 +#: templates/InvenTree/search.html:166 templates/js/translated/search.js:178 +#: users/models.py:192 +msgid "Stock Locations" +msgstr "" + +#: stock/models.py:158 stock/models.py:935 +#: stock/templates/stock/item_base.html:247 +msgid "Owner" +msgstr "" + +#: stock/models.py:159 stock/models.py:936 +msgid "Select Owner" +msgstr "" + +#: stock/models.py:167 +msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." +msgstr "" + +#: stock/models.py:174 templates/js/translated/stock.js:2781 +#: templates/js/translated/table_filters.js:243 +msgid "External" +msgstr "" + +#: stock/models.py:175 +msgid "This is an external stock location" +msgstr "" + +#: stock/models.py:181 templates/js/translated/stock.js:2790 +#: templates/js/translated/table_filters.js:246 +msgid "Location type" +msgstr "" + +#: stock/models.py:185 +msgid "Stock location type of this location" +msgstr "" + +#: stock/models.py:254 +msgid "You cannot make this stock location structural because some stock items are already located into it!" +msgstr "" + +#: stock/models.py:626 +msgid "Stock items cannot be located into structural stock locations!" +msgstr "" + +#: stock/models.py:656 stock/serializers.py:290 +msgid "Stock item cannot be created for virtual parts" +msgstr "" + +#: stock/models.py:673 +#, python-brace-format +msgid "Part type ('{self.supplier_part.part}') must be {self.part}" +msgstr "" + +#: stock/models.py:683 stock/models.py:696 +msgid "Quantity must be 1 for item with a serial number" +msgstr "" + +#: stock/models.py:686 +msgid "Serial number cannot be set if quantity greater than 1" +msgstr "" + +#: stock/models.py:710 +msgid "Item cannot belong to itself" +msgstr "" + +#: stock/models.py:715 +msgid "Item must have a build reference if is_building=True" +msgstr "" + +#: stock/models.py:728 +msgid "Build reference does not point to the same part object" +msgstr "" + +#: stock/models.py:744 +msgid "Parent Stock Item" +msgstr "" + +#: stock/models.py:756 +msgid "Base part" +msgstr "" + +#: stock/models.py:766 +msgid "Select a matching supplier part for this stock item" +msgstr "" + +#: stock/models.py:778 +msgid "Where is this stock item located?" +msgstr "" + +#: stock/models.py:786 stock/serializers.py:1351 +msgid "Packaging this stock item is stored in" +msgstr "" + +#: stock/models.py:797 +msgid "Is this item installed in another item?" +msgstr "" + +#: stock/models.py:816 +msgid "Serial number for this item" +msgstr "" + +#: stock/models.py:830 stock/serializers.py:1334 +msgid "Batch code for this stock item" +msgstr "" + +#: stock/models.py:835 +msgid "Stock Quantity" +msgstr "" + +#: stock/models.py:845 +msgid "Source Build" +msgstr "" + +#: stock/models.py:848 +msgid "Build for this stock item" +msgstr "" + +#: stock/models.py:855 stock/templates/stock/item_base.html:363 +msgid "Consumed By" +msgstr "" + +#: stock/models.py:858 +msgid "Build order which consumed this stock item" +msgstr "" + +#: stock/models.py:867 +msgid "Source Purchase Order" +msgstr "" + +#: stock/models.py:871 +msgid "Purchase order for this stock item" +msgstr "" + +#: stock/models.py:877 +msgid "Destination Sales Order" +msgstr "" + +#: stock/models.py:888 +msgid "Expiry date for stock item. Stock will be considered expired after this date" +msgstr "" + +#: stock/models.py:906 +msgid "Delete on deplete" +msgstr "" + +#: stock/models.py:907 +msgid "Delete this Stock Item when stock is depleted" +msgstr "" + +#: stock/models.py:927 +msgid "Single unit purchase price at time of purchase" +msgstr "" + +#: stock/models.py:958 +msgid "Converted to part" +msgstr "" + +#: stock/models.py:1468 +msgid "Part is not set as trackable" +msgstr "" + +#: stock/models.py:1474 +msgid "Quantity must be integer" +msgstr "" + +#: stock/models.py:1482 +#, python-brace-format +msgid "Quantity must not exceed available stock quantity ({self.quantity})" +msgstr "" + +#: stock/models.py:1488 +msgid "Serial numbers must be a list of integers" +msgstr "" + +#: stock/models.py:1493 +msgid "Quantity does not match serial numbers" +msgstr "" + +#: stock/models.py:1501 stock/serializers.py:529 +msgid "Serial numbers already exist" +msgstr "" + +#: stock/models.py:1598 +msgid "Test template does not exist" +msgstr "" + +#: stock/models.py:1616 +msgid "Stock item has been assigned to a sales order" +msgstr "" + +#: stock/models.py:1620 +msgid "Stock item is installed in another item" +msgstr "" + +#: stock/models.py:1623 +msgid "Stock item contains other items" +msgstr "" + +#: stock/models.py:1626 +msgid "Stock item has been assigned to a customer" +msgstr "" + +#: stock/models.py:1629 +msgid "Stock item is currently in production" +msgstr "" + +#: stock/models.py:1632 +msgid "Serialized stock cannot be merged" +msgstr "" + +#: stock/models.py:1639 stock/serializers.py:1240 +msgid "Duplicate stock items" +msgstr "" + +#: stock/models.py:1643 +msgid "Stock items must refer to the same part" +msgstr "" + +#: stock/models.py:1651 +msgid "Stock items must refer to the same supplier part" +msgstr "" + +#: stock/models.py:1656 +msgid "Stock status codes must match" +msgstr "" + +#: stock/models.py:1873 +msgid "StockItem cannot be moved as it is not in stock" +msgstr "" + +#: stock/models.py:2336 +msgid "Entry notes" +msgstr "" + +#: stock/models.py:2402 +msgid "Value must be provided for this test" +msgstr "" + +#: stock/models.py:2408 +msgid "Attachment must be uploaded for this test" +msgstr "" + +#: stock/models.py:2435 +msgid "Test result" +msgstr "" + +#: stock/models.py:2442 +msgid "Test output value" +msgstr "" + +#: stock/models.py:2450 +msgid "Test result attachment" +msgstr "" + +#: stock/models.py:2454 +msgid "Test notes" +msgstr "" + +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "" + +#: stock/models.py:2463 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2469 +msgid "Started" +msgstr "" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:100 +msgid "Test template for this result" +msgstr "" + +#: stock/serializers.py:119 +msgid "Template ID or test name must be provided" +msgstr "" + +#: stock/serializers.py:151 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:184 +msgid "Serial number is too large" +msgstr "" + +#: stock/serializers.py:282 +msgid "Use pack size when adding: the quantity defined is the number of packs" +msgstr "" + +#: stock/serializers.py:402 +msgid "Purchase price of this stock item, per unit or pack" +msgstr "" + +#: stock/serializers.py:464 +msgid "Enter number of stock items to serialize" +msgstr "" + +#: stock/serializers.py:477 +#, python-brace-format +msgid "Quantity must not exceed available stock quantity ({q})" +msgstr "" + +#: stock/serializers.py:484 +msgid "Enter serial numbers for new items" +msgstr "" + +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 +msgid "Destination stock location" +msgstr "" + +#: stock/serializers.py:502 +msgid "Optional note field" +msgstr "" + +#: stock/serializers.py:512 +msgid "Serial numbers cannot be assigned to this part" +msgstr "" + +#: stock/serializers.py:567 +msgid "Select stock item to install" +msgstr "" + +#: stock/serializers.py:574 +msgid "Quantity to Install" +msgstr "" + +#: stock/serializers.py:575 +msgid "Enter the quantity of items to install" +msgstr "" + +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 +msgid "Add transaction note (optional)" +msgstr "" + +#: stock/serializers.py:588 +msgid "Quantity to install must be at least 1" +msgstr "" + +#: stock/serializers.py:596 +msgid "Stock item is unavailable" +msgstr "" + +#: stock/serializers.py:607 +msgid "Selected part is not in the Bill of Materials" +msgstr "" + +#: stock/serializers.py:620 +msgid "Quantity to install must not exceed available quantity" +msgstr "" + +#: stock/serializers.py:655 +msgid "Destination location for uninstalled item" +msgstr "" + +#: stock/serializers.py:690 +msgid "Select part to convert stock item into" +msgstr "" + +#: stock/serializers.py:703 +msgid "Selected part is not a valid option for conversion" +msgstr "" + +#: stock/serializers.py:720 +msgid "Cannot convert stock item with assigned SupplierPart" +msgstr "" + +#: stock/serializers.py:751 +msgid "Destination location for returned item" +msgstr "" + +#: stock/serializers.py:788 +msgid "Select stock items to change status" +msgstr "" + +#: stock/serializers.py:794 +msgid "No stock items selected" +msgstr "" + +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 +#: stock/templates/stock/location.html:213 +#: stock/templates/stock/location_sidebar.html:5 +msgid "Sublocations" +msgstr "" + +#: stock/serializers.py:1069 +msgid "Part must be salable" +msgstr "" + +#: stock/serializers.py:1073 +msgid "Item is allocated to a sales order" +msgstr "" + +#: stock/serializers.py:1077 +msgid "Item is allocated to a build order" +msgstr "" + +#: stock/serializers.py:1101 +msgid "Customer to assign stock items" +msgstr "" + +#: stock/serializers.py:1107 +msgid "Selected company is not a customer" +msgstr "" + +#: stock/serializers.py:1115 +msgid "Stock assignment notes" +msgstr "" + +#: stock/serializers.py:1125 stock/serializers.py:1379 +msgid "A list of stock items must be provided" +msgstr "" + +#: stock/serializers.py:1204 +msgid "Stock merging notes" +msgstr "" + +#: stock/serializers.py:1209 +msgid "Allow mismatched suppliers" +msgstr "" + +#: stock/serializers.py:1210 +msgid "Allow stock items with different supplier parts to be merged" +msgstr "" + +#: stock/serializers.py:1215 +msgid "Allow mismatched status" +msgstr "" + +#: stock/serializers.py:1216 +msgid "Allow stock items with different status codes to be merged" +msgstr "" + +#: stock/serializers.py:1226 +msgid "At least two stock items must be provided" +msgstr "" + +#: stock/serializers.py:1293 +msgid "No Change" +msgstr "" + +#: stock/serializers.py:1322 +msgid "StockItem primary key value" +msgstr "" + +#: stock/serializers.py:1341 +msgid "Stock item status code" +msgstr "" + +#: stock/serializers.py:1369 +msgid "Stock transaction notes" +msgstr "" + +#: stock/templates/stock/item.html:17 +msgid "Stock Tracking Information" +msgstr "" + +#: stock/templates/stock/item.html:63 +msgid "Child Stock Items" +msgstr "" + +#: stock/templates/stock/item.html:72 +msgid "This stock item does not have any child items" +msgstr "" + +#: stock/templates/stock/item.html:81 +#: stock/templates/stock/stock_sidebar.html:12 +msgid "Test Data" +msgstr "" + +#: stock/templates/stock/item.html:85 stock/templates/stock/item_base.html:65 +msgid "Test Report" +msgstr "" + +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 +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:274 +msgid "Delete all test results for this stock item" +msgstr "" + +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 +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:1821 +msgid "Count stock" +msgstr "" + +#: stock/templates/stock/item_base.html:81 +#: templates/js/translated/stock.js:1803 +msgid "Add stock" +msgstr "" + +#: stock/templates/stock/item_base.html:82 +#: templates/js/translated/stock.js:1812 +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:1830 +msgid "Transfer stock" +msgstr "" + +#: stock/templates/stock/item_base.html:91 +#: templates/js/translated/stock.js:1884 +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:2121 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:2378 +msgid "No location set" +msgstr "" + +#: stock/templates/stock/item_base.html:413 +msgid "Tests" +msgstr "" + +#: stock/templates/stock/item_base.html:419 +msgid "This stock item has not passed all required tests" +msgstr "" + +#: stock/templates/stock/item_base.html:437 +#, python-format +msgid "This StockItem expired on %(item.expiry_date)s" +msgstr "" + +#: stock/templates/stock/item_base.html:437 +#: templates/js/translated/table_filters.js:435 users/models.py:163 +msgid "Expired" +msgstr "" + +#: stock/templates/stock/item_base.html:439 +#, python-format +msgid "This StockItem expires on %(item.expiry_date)s" +msgstr "" + +#: stock/templates/stock/item_base.html:455 +msgid "No stocktake performed" +msgstr "" + +#: stock/templates/stock/item_base.html:507 +#: templates/js/translated/stock.js:1951 +msgid "stock item" +msgstr "" + +#: stock/templates/stock/item_base.html:532 +msgid "Edit Stock Status" +msgstr "" + +#: stock/templates/stock/item_base.html:541 +msgid "Stock Item QR Code" +msgstr "" + +#: stock/templates/stock/item_base.html:552 +msgid "Link Barcode to Stock Item" +msgstr "" + +#: stock/templates/stock/item_base.html:616 +msgid "Select one of the part variants listed below." +msgstr "" + +#: stock/templates/stock/item_base.html:619 +msgid "Warning" +msgstr "" + +#: stock/templates/stock/item_base.html:620 +msgid "This action cannot be easily undone" +msgstr "" + +#: stock/templates/stock/item_base.html:628 +msgid "Convert Stock Item" +msgstr "" + +#: stock/templates/stock/item_base.html:662 +msgid "Return to Stock" +msgstr "" + +#: stock/templates/stock/item_serialize.html:5 +msgid "Create serialized items from this stock item." +msgstr "" + +#: stock/templates/stock/item_serialize.html:7 +msgid "Select quantity to serialize, and unique serial numbers." +msgstr "" + +#: stock/templates/stock/location.html:38 +msgid "Perform stocktake for this stock location" +msgstr "" + +#: stock/templates/stock/location.html:45 +msgid "Locate stock location" +msgstr "" + +#: stock/templates/stock/location.html:63 +msgid "Scan stock items into this location" +msgstr "" + +#: stock/templates/stock/location.html:63 +msgid "Scan In Stock Items" +msgstr "" + +#: stock/templates/stock/location.html:64 +msgid "Scan stock container into this location" +msgstr "" + +#: stock/templates/stock/location.html:64 +msgid "Scan In Container" +msgstr "" + +#: stock/templates/stock/location.html:75 +msgid "Print Location Report" +msgstr "" + +#: stock/templates/stock/location.html:104 +msgid "Location actions" +msgstr "" + +#: stock/templates/stock/location.html:106 +msgid "Edit location" +msgstr "" + +#: stock/templates/stock/location.html:108 +msgid "Delete location" +msgstr "" + +#: stock/templates/stock/location.html:138 +msgid "Top level stock location" +msgstr "" + +#: stock/templates/stock/location.html:144 +msgid "Location Owner" +msgstr "" + +#: stock/templates/stock/location.html:148 +msgid "You are not in the list of owners of this location. This stock location cannot be edited." +msgstr "" + +#: stock/templates/stock/location.html:217 +msgid "Create new stock location" +msgstr "" + +#: stock/templates/stock/location.html:218 +msgid "New Location" +msgstr "" + +#: stock/templates/stock/location.html:287 +#: templates/js/translated/stock.js:2572 +msgid "stock location" +msgstr "" + +#: stock/templates/stock/location.html:315 +msgid "Scanned stock container into this location" +msgstr "" + +#: stock/templates/stock/location.html:388 +msgid "Stock Location QR Code" +msgstr "" + +#: stock/templates/stock/location.html:399 +msgid "Link Barcode to Stock Location" +msgstr "" + +#: stock/templates/stock/stock_app_base.html:16 +msgid "Loading..." +msgstr "" + +#: stock/templates/stock/stock_sidebar.html:5 +msgid "Stock Tracking" +msgstr "" + +#: stock/templates/stock/stock_sidebar.html:8 +msgid "Allocations" +msgstr "" + +#: stock/templates/stock/stock_sidebar.html:20 +msgid "Child Items" +msgstr "" + +#: templates/403.html:6 templates/403.html:12 templates/403_csrf.html:7 +msgid "Permission Denied" +msgstr "" + +#: templates/403.html:15 +msgid "You do not have permission to view this page." +msgstr "" + +#: templates/403_csrf.html:11 +msgid "Authentication Failure" +msgstr "" + +#: templates/403_csrf.html:14 +msgid "You have been logged out from InvenTree." +msgstr "" + +#: templates/403_csrf.html:19 templates/InvenTree/settings/sidebar.html:29 +#: templates/navbar.html:150 +msgid "Login" +msgstr "" + +#: templates/404.html:6 templates/404.html:12 +msgid "Page Not Found" +msgstr "" + +#: templates/404.html:15 +msgid "The requested page does not exist" +msgstr "" + +#: templates/500.html:6 templates/500.html:12 +msgid "Internal Server Error" +msgstr "" + +#: templates/500.html:15 +#, python-format +msgid "The %(inventree_title)s server raised an internal error" +msgstr "" + +#: templates/500.html:16 +msgid "Refer to the error log in the admin interface for further details" +msgstr "" + +#: templates/503.html:11 templates/503.html:33 +msgid "Site is in Maintenance" +msgstr "" + +#: templates/503.html:39 +msgid "The site is currently in maintenance and should be up again soon!" +msgstr "" + +#: templates/InvenTree/index.html:7 +msgid "Index" +msgstr "" + +#: templates/InvenTree/index.html:39 +msgid "Subscribed Parts" +msgstr "" + +#: templates/InvenTree/index.html:52 +msgid "Subscribed Categories" +msgstr "" + +#: templates/InvenTree/index.html:62 +msgid "Latest Parts" +msgstr "" + +#: templates/InvenTree/index.html:77 +msgid "BOM Waiting Validation" +msgstr "" + +#: templates/InvenTree/index.html:106 +msgid "Recently Updated" +msgstr "" + +#: templates/InvenTree/index.html:134 +msgid "Depleted Stock" +msgstr "" + +#: templates/InvenTree/index.html:148 +msgid "Required for Build Orders" +msgstr "" + +#: templates/InvenTree/index.html:156 +msgid "Expired Stock" +msgstr "" + +#: templates/InvenTree/index.html:172 +msgid "Stale Stock" +msgstr "" + +#: templates/InvenTree/index.html:199 +msgid "Build Orders In Progress" +msgstr "" + +#: templates/InvenTree/index.html:210 +msgid "Overdue Build Orders" +msgstr "" + +#: templates/InvenTree/index.html:230 +msgid "Outstanding Purchase Orders" +msgstr "" + +#: templates/InvenTree/index.html:241 +msgid "Overdue Purchase Orders" +msgstr "" + +#: templates/InvenTree/index.html:262 +msgid "Outstanding Sales Orders" +msgstr "" + +#: templates/InvenTree/index.html:273 +msgid "Overdue Sales Orders" +msgstr "" + +#: templates/InvenTree/index.html:299 +msgid "InvenTree News" +msgstr "" + +#: templates/InvenTree/index.html:301 +msgid "Current News" +msgstr "" + +#: templates/InvenTree/notifications/history.html:9 +msgid "Notification History" +msgstr "" + +#: templates/InvenTree/notifications/history.html:13 +#: templates/InvenTree/notifications/history.html:14 +#: templates/InvenTree/notifications/notifications.html:75 +msgid "Delete Notifications" +msgstr "" + +#: templates/InvenTree/notifications/inbox.html:9 +msgid "Pending Notifications" +msgstr "" + +#: templates/InvenTree/notifications/inbox.html:13 +#: templates/InvenTree/notifications/inbox.html:14 +msgid "Mark all as read" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:10 +#: templates/InvenTree/notifications/sidebar.html:5 +#: templates/InvenTree/settings/sidebar.html:17 +#: templates/InvenTree/settings/sidebar.html:37 templates/notifications.html:5 +msgid "Notifications" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:38 +msgid "No unread notifications found" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:58 +msgid "No notification history found" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:65 +msgid "Delete all read notifications" +msgstr "" + +#: templates/InvenTree/notifications/notifications.html:89 +#: templates/js/translated/notification.js:85 +msgid "Delete Notification" +msgstr "" + +#: templates/InvenTree/notifications/sidebar.html:8 +msgid "Inbox" +msgstr "" + +#: templates/InvenTree/notifications/sidebar.html:10 +msgid "History" +msgstr "" + +#: templates/InvenTree/search.html:8 +msgid "Search Results" +msgstr "" + +#: templates/InvenTree/settings/barcode.html:8 +msgid "Barcode Settings" +msgstr "" + +#: templates/InvenTree/settings/build.html:8 +msgid "Build Order Settings" +msgstr "" + +#: templates/InvenTree/settings/category.html:7 +msgid "Category Settings" +msgstr "" + +#: templates/InvenTree/settings/global.html:8 +msgid "Server Settings" +msgstr "" + +#: templates/InvenTree/settings/label.html:8 +#: templates/InvenTree/settings/user_labels.html:9 +msgid "Label Settings" +msgstr "" + +#: templates/InvenTree/settings/login.html:8 +msgid "Login Settings" +msgstr "" + +#: templates/InvenTree/settings/login.html:15 +msgid "Outgoing email has not been configured. Some login and sign-up features may not work correctly!" +msgstr "" + +#: templates/InvenTree/settings/login.html:25 templates/account/signup.html:5 +#: templates/socialaccount/signup.html:5 +msgid "Signup" +msgstr "" + +#: templates/InvenTree/settings/login.html:34 +msgid "Single Sign On" +msgstr "" + +#: templates/InvenTree/settings/mixins/settings.html:5 +#: templates/InvenTree/settings/settings.html:12 templates/navbar.html:147 +msgid "Settings" +msgstr "" + +#: templates/InvenTree/settings/mixins/urls.html:5 +msgid "URLs" +msgstr "" + +#: templates/InvenTree/settings/mixins/urls.html:8 +#, python-format +msgid "The Base-URL for this plugin is %(base)s." +msgstr "" + +#: templates/InvenTree/settings/mixins/urls.html:14 +msgid "URL" +msgstr "" + +#: templates/InvenTree/settings/mixins/urls.html:23 +msgid "Open in new tab" +msgstr "" + +#: templates/InvenTree/settings/notifications.html:9 +#: templates/InvenTree/settings/user_notifications.html:9 +msgid "Notification Settings" +msgstr "" + +#: templates/InvenTree/settings/notifications.html:18 +msgid "Slug" +msgstr "" + +#: templates/InvenTree/settings/part.html:7 +msgid "Part Settings" +msgstr "" + +#: templates/InvenTree/settings/part.html:42 +msgid "Part Import" +msgstr "" + +#: templates/InvenTree/settings/part.html:46 +msgid "Import Part" +msgstr "" + +#: templates/InvenTree/settings/part_parameters.html:20 +msgid "Part Parameter Templates" +msgstr "" + +#: templates/InvenTree/settings/part_stocktake.html:7 +msgid "Stocktake Settings" +msgstr "" + +#: templates/InvenTree/settings/part_stocktake.html:25 +msgid "Stocktake Reports" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:8 +#: templates/InvenTree/settings/sidebar.html:35 +msgid "Physical Units" +msgstr "" + +#: templates/InvenTree/settings/physical_units.html:12 +msgid "Add Unit" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:9 +#: templates/InvenTree/settings/sidebar.html:64 +msgid "Plugin Settings" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:15 +msgid "Changing the settings below require you to immediately restart the server. Do not change this while under active usage." +msgstr "" + +#: templates/InvenTree/settings/plugin.html:36 +#: templates/InvenTree/settings/sidebar.html:66 +msgid "Plugins" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:42 +#: templates/InvenTree/settings/plugin.html:43 +#: templates/js/translated/plugin.js:151 +msgid "Install Plugin" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:45 +#: templates/InvenTree/settings/plugin.html:46 +#: templates/js/translated/plugin.js:224 +msgid "Reload Plugins" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:56 +msgid "External plugins are not enabled for this InvenTree installation" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:71 +msgid "Plugin Error Stack" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:80 +msgid "Stage" +msgstr "" + +#: templates/InvenTree/settings/plugin.html:82 +#: 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:34 +msgid "Exchange Rates" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:38 +msgid "Update Now" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:46 +#: templates/InvenTree/settings/pricing.html:50 +msgid "Last Update" +msgstr "" + +#: templates/InvenTree/settings/pricing.html:50 +msgid "Never" +msgstr "" + +#: templates/InvenTree/settings/project_codes.html:8 +msgid "Project Code Settings" +msgstr "" + +#: templates/InvenTree/settings/project_codes.html:21 +#: templates/InvenTree/settings/sidebar.html:33 +msgid "Project Codes" +msgstr "" + +#: templates/InvenTree/settings/project_codes.html:25 +#: templates/InvenTree/settings/settings_staff_js.html:216 +msgid "New Project Code" +msgstr "" + +#: templates/InvenTree/settings/report.html:8 +#: templates/InvenTree/settings/user_reporting.html:9 +msgid "Report Settings" +msgstr "" + +#: templates/InvenTree/settings/returns.html:7 +msgid "Return Order Settings" +msgstr "" + +#: templates/InvenTree/settings/setting.html:31 +msgid "No value set" +msgstr "" + +#: templates/InvenTree/settings/setting.html:46 +msgid "Edit setting" +msgstr "" + +#: templates/InvenTree/settings/settings_js.html:58 +msgid "Edit Plugin Setting" +msgstr "" + +#: templates/InvenTree/settings/settings_js.html:60 +msgid "Edit Notification Setting" +msgstr "" + +#: templates/InvenTree/settings/settings_js.html:63 +msgid "Edit Global Setting" +msgstr "" + +#: templates/InvenTree/settings/settings_js.html:65 +msgid "Edit User Setting" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:49 +msgid "Rate" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:81 +#: templates/js/translated/forms.js: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 +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:2226 +msgid "group" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:175 +#: templates/InvenTree/settings/settings_staff_js.html:189 +msgid "Edit Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:176 +#: templates/InvenTree/settings/settings_staff_js.html:203 +msgid "Delete Project Code" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:285 +msgid "No category parameter templates found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:308 +#: templates/js/translated/part.js:1645 +msgid "Edit Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:309 +#: templates/js/translated/part.js:1646 +msgid "Delete Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:326 +msgid "Edit Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:353 +msgid "Delete Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:388 +msgid "Create Category Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:418 +msgid "Create Part Parameter Template" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:440 +msgid "No stock location types found" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:461 +msgid "Location count" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:466 +#: templates/InvenTree/settings/settings_staff_js.html:480 +msgid "Edit Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:467 +msgid "Delete Location type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:490 +msgid "Delete Location Type" +msgstr "" + +#: templates/InvenTree/settings/settings_staff_js.html:500 +#: templates/InvenTree/settings/stock.html:37 +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:2159 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:33 +msgid "Stock Location Types" +msgstr "" + +#: templates/InvenTree/settings/user.html:13 +msgid "Account Settings" +msgstr "" + +#: templates/InvenTree/settings/user.html:19 +#: templates/account/password_reset_from_key.html:4 +#: templates/account/password_reset_from_key.html:7 +msgid "Change Password" +msgstr "" + +#: templates/InvenTree/settings/user.html:33 +msgid "Username" +msgstr "" + +#: templates/InvenTree/settings/user.html:37 +msgid "First Name" +msgstr "" + +#: templates/InvenTree/settings/user.html:41 +msgid "Last Name" +msgstr "" + +#: templates/InvenTree/settings/user.html:55 +msgid "The following email addresses are associated with your account:" +msgstr "" + +#: templates/InvenTree/settings/user.html:76 +msgid "Verified" +msgstr "" + +#: templates/InvenTree/settings/user.html:78 +msgid "Unverified" +msgstr "" + +#: templates/InvenTree/settings/user.html:80 +#: templates/js/translated/company.js:947 +msgid "Primary" +msgstr "" + +#: templates/InvenTree/settings/user.html:86 +msgid "Make Primary" +msgstr "" + +#: templates/InvenTree/settings/user.html:87 +msgid "Re-send Verification" +msgstr "" + +#: templates/InvenTree/settings/user.html:96 +msgid "Warning:" +msgstr "" + +#: templates/InvenTree/settings/user.html:97 +msgid "You currently do not have any email address set up. You should really add an email address so you can receive notifications, reset your password, etc." +msgstr "" + +#: templates/InvenTree/settings/user.html:105 +msgid "Add Email Address" +msgstr "" + +#: templates/InvenTree/settings/user.html:110 +msgid "Add Email" +msgstr "" + +#: templates/InvenTree/settings/user.html:120 +msgid "Multifactor" +msgstr "" + +#: templates/InvenTree/settings/user.html:125 +msgid "You have these factors available:" +msgstr "" + +#: templates/InvenTree/settings/user.html:135 +msgid "TOTP" +msgstr "" + +#: templates/InvenTree/settings/user.html:141 +msgid "Static" +msgstr "" + +#: templates/InvenTree/settings/user.html:150 +msgid "Multifactor authentication is not configured for your account" +msgstr "" + +#: templates/InvenTree/settings/user.html:157 +msgid "Change factors" +msgstr "" + +#: templates/InvenTree/settings/user.html:158 +msgid "Setup multifactor" +msgstr "" + +#: templates/InvenTree/settings/user.html:160 +msgid "Remove multifactor" +msgstr "" + +#: templates/InvenTree/settings/user.html:168 +msgid "Active Sessions" +msgstr "" + +#: templates/InvenTree/settings/user.html:174 +msgid "Log out active sessions (except this one)" +msgstr "" + +#: templates/InvenTree/settings/user.html:175 +msgid "Log Out Active Sessions" +msgstr "" + +#: templates/InvenTree/settings/user.html:184 +msgid "unknown on unknown" +msgstr "" + +#: templates/InvenTree/settings/user.html:185 +msgid "unknown" +msgstr "" + +#: templates/InvenTree/settings/user.html:189 +msgid "IP Address" +msgstr "" + +#: templates/InvenTree/settings/user.html:190 +msgid "Device" +msgstr "" + +#: templates/InvenTree/settings/user.html:191 +msgid "Last Activity" +msgstr "" + +#: templates/InvenTree/settings/user.html:204 +#, python-format +msgid "%(time)s ago (this session)" +msgstr "" + +#: templates/InvenTree/settings/user.html:206 +#, python-format +msgid "%(time)s ago" +msgstr "" + +#: templates/InvenTree/settings/user.html:218 +msgid "Do you really want to remove the selected email address?" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:9 +msgid "Display Settings" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:29 +msgid "Theme Settings" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:39 +msgid "Select theme" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:50 +msgid "Set Theme" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:58 +msgid "Language Settings" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:67 +msgid "Select language" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:83 +#, python-format +msgid "%(lang_translated)s%% translated" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:85 +msgid "No translations available" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:92 +msgid "Set Language" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:95 +msgid "Some languages are not complete" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:97 +msgid "Show only sufficient" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:99 +msgid "and hidden." +msgstr "" + +#: templates/InvenTree/settings/user_display.html:99 +msgid "Show them too" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:106 +msgid "Help the translation efforts!" +msgstr "" + +#: templates/InvenTree/settings/user_display.html:107 +msgid "Native language translation of the web application is community contributed via crowdin. Contributions are welcomed and encouraged." +msgstr "" + +#: templates/InvenTree/settings/user_display.html:108 +msgid "InvenTree Translation Project" +msgstr "" + +#: templates/InvenTree/settings/user_homepage.html:9 +msgid "Home Page Settings" +msgstr "" + +#: templates/InvenTree/settings/user_search.html:9 +msgid "Search Settings" +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:9 +msgid "Single Sign On Accounts" +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:16 +msgid "You can sign in to your account using any of the following third party accounts:" +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:52 +msgid "There are no social network accounts connected to this account." +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:58 +msgid "Add SSO Account" +msgstr "" + +#: templates/InvenTree/settings/user_sso.html:67 +msgid "Single Sign On is not enabled for this server" +msgstr "" + +#: templates/about.html:9 +msgid "InvenTree Version" +msgstr "" + +#: templates/about.html:14 +msgid "Development Version" +msgstr "" + +#: templates/about.html:17 +msgid "Up to Date" +msgstr "" + +#: templates/about.html:19 +msgid "Update Available" +msgstr "" + +#: templates/about.html:43 +msgid "Commit Branch" +msgstr "" + +#: templates/about.html:49 +msgid "InvenTree Documentation" +msgstr "" + +#: templates/about.html:54 +msgid "API Version" +msgstr "" + +#: templates/about.html:59 +msgid "Python Version" +msgstr "" + +#: templates/about.html:64 +msgid "Django Version" +msgstr "" + +#: templates/about.html:69 +msgid "View Code on GitHub" +msgstr "" + +#: templates/about.html:74 +msgid "Credits" +msgstr "" + +#: templates/about.html:79 +msgid "Mobile App" +msgstr "" + +#: templates/about.html:84 +msgid "Submit Bug Report" +msgstr "" + +#: templates/about.html:91 templates/clip.html:4 +#: templates/js/translated/helpers.js:585 +msgid "copy to clipboard" +msgstr "" + +#: templates/about.html:91 +msgid "copy version information" +msgstr "" + +#: templates/account/base.html:66 templates/navbar.html:17 +msgid "InvenTree logo" +msgstr "" + +#: templates/account/email_confirm.html:6 +#: templates/account/email_confirm.html:9 +msgid "Confirm Email Address" +msgstr "" + +#: templates/account/email_confirm.html:15 +#, python-format +msgid "Please confirm that %(email)s is an email address for user %(user_display)s." +msgstr "" + +#: templates/account/email_confirm.html:21 templates/js/translated/forms.js: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:17 +#: templates/account/login.html:38 templates/socialaccount/login.html:5 +msgid "Sign In" +msgstr "" + +#: templates/account/login.html:21 +msgid "Not a member?" +msgstr "" + +#: templates/account/login.html:23 templates/account/signup.html:11 +#: templates/account/signup.html:22 templates/socialaccount/signup.html:8 +#: templates/socialaccount/signup.html:23 +msgid "Sign Up" +msgstr "" + +#: templates/account/login.html:45 +msgid "Forgot Password?" +msgstr "" + +#: templates/account/login.html:53 +msgid "or log in with" +msgstr "" + +#: templates/account/logout.html:5 templates/account/logout.html:8 +#: templates/account/logout.html:20 +msgid "Sign Out" +msgstr "" + +#: templates/account/logout.html:10 +msgid "Are you sure you want to sign out?" +msgstr "" + +#: templates/account/logout.html:27 templates/allauth_2fa/backup_tokens.html:35 +#: templates/allauth_2fa/remove.html:24 templates/allauth_2fa/setup.html:44 +msgid "Return to Site" +msgstr "" + +#: templates/account/password_reset.html:5 +#: templates/account/password_reset.html:12 +msgid "Password Reset" +msgstr "" + +#: templates/account/password_reset.html:18 +msgid "Forgotten your password? Enter your email address below, and we'll send you an email allowing you to reset it." +msgstr "" + +#: templates/account/password_reset.html:23 +msgid "Reset My Password" +msgstr "" + +#: templates/account/password_reset.html:27 templates/account/signup.html:37 +msgid "This function is currently disabled. Please contact an administrator." +msgstr "" + +#: templates/account/password_reset_from_key.html:7 +msgid "Bad Token" +msgstr "" + +#: templates/account/password_reset_from_key.html:11 +#, python-format +msgid "The password reset link was invalid, possibly because it has already been used. Please request a new password reset." +msgstr "" + +#: templates/account/password_reset_from_key.html:18 +msgid "Change password" +msgstr "" + +#: templates/account/password_reset_from_key.html:22 +msgid "Your password is now changed." +msgstr "" + +#: templates/account/signup.html:13 +#, python-format +msgid "Already have an account? Then please sign in." +msgstr "" + +#: templates/account/signup.html:28 +msgid "Use a SSO-provider for signup" +msgstr "" + +#: templates/account/signup_closed.html:5 +#: templates/account/signup_closed.html:8 +msgid "Sign Up Closed" +msgstr "" + +#: templates/account/signup_closed.html:10 +msgid "Sign up is currently closed." +msgstr "" + +#: templates/account/signup_closed.html:15 +#: templates/socialaccount/authentication_error.html:19 +#: templates/socialaccount/login.html:38 templates/socialaccount/signup.html: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:23 +msgid "Step 2" +msgstr "" + +#: templates/allauth_2fa/setup.html:27 +msgid "Input a token generated by the app:" +msgstr "" + +#: templates/allauth_2fa/setup.html:37 +msgid "Verify" +msgstr "" + +#: templates/attachment_button.html:4 templates/js/translated/attachment.js:70 +msgid "Add Link" +msgstr "" + +#: templates/attachment_button.html:7 templates/js/translated/attachment.js:48 +msgid "Add Attachment" +msgstr "" + +#: templates/barcode_data.html:5 +msgid "Barcode Identifier" +msgstr "" + +#: templates/base.html:103 +msgid "Server Restart Required" +msgstr "" + +#: templates/base.html:106 +msgid "A configuration option has been changed which requires a server restart" +msgstr "" + +#: templates/base.html:106 templates/base.html:116 +msgid "Contact your system administrator for further information" +msgstr "" + +#: templates/base.html:113 +msgid "Pending Database Migrations" +msgstr "" + +#: templates/base.html:116 +msgid "There are pending database migrations which require attention" +msgstr "" + +#: templates/email/build_order_completed.html:9 +#: templates/email/canceled_order_assigned.html:9 +#: templates/email/new_order_assigned.html:9 +#: templates/email/overdue_build_order.html:9 +#: templates/email/overdue_purchase_order.html:9 +#: templates/email/overdue_sales_order.html:9 +#: templates/email/purchase_order_received.html:9 +#: templates/email/return_order_received.html:9 +msgid "Click on the following link to view this order" +msgstr "" + +#: templates/email/build_order_required_stock.html:7 +msgid "Stock is required for the following build order" +msgstr "" + +#: templates/email/build_order_required_stock.html:8 +#, python-format +msgid "Build order %(build)s - building %(quantity)s x %(part)s" +msgstr "" + +#: templates/email/build_order_required_stock.html:10 +msgid "Click on the following link to view this build order" +msgstr "" + +#: templates/email/build_order_required_stock.html:14 +msgid "The following parts are low on required stock" +msgstr "" + +#: templates/email/build_order_required_stock.html:18 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 +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:3218 +msgid "Minimum Quantity" +msgstr "" + +#: templates/js/translated/api.js:225 templates/js/translated/modals.js:1130 +msgid "No Response" +msgstr "" + +#: templates/js/translated/api.js:226 templates/js/translated/modals.js:1131 +msgid "No response from the InvenTree server" +msgstr "" + +#: templates/js/translated/api.js:232 +msgid "Error 400: Bad request" +msgstr "" + +#: templates/js/translated/api.js:233 +msgid "API request returned error code 400" +msgstr "" + +#: templates/js/translated/api.js:237 templates/js/translated/modals.js:1140 +msgid "Error 401: Not Authenticated" +msgstr "" + +#: templates/js/translated/api.js:238 templates/js/translated/modals.js:1141 +msgid "Authentication credentials not supplied" +msgstr "" + +#: templates/js/translated/api.js:242 templates/js/translated/modals.js:1145 +msgid "Error 403: Permission Denied" +msgstr "" + +#: templates/js/translated/api.js:243 templates/js/translated/modals.js:1146 +msgid "You do not have the required permissions to access this function" +msgstr "" + +#: templates/js/translated/api.js:247 templates/js/translated/modals.js:1150 +msgid "Error 404: Resource Not Found" +msgstr "" + +#: templates/js/translated/api.js:248 templates/js/translated/modals.js:1151 +msgid "The requested resource could not be located on the server" +msgstr "" + +#: templates/js/translated/api.js:252 +msgid "Error 405: Method Not Allowed" +msgstr "" + +#: templates/js/translated/api.js:253 +msgid "HTTP method not allowed at URL" +msgstr "" + +#: templates/js/translated/api.js:257 templates/js/translated/modals.js:1155 +msgid "Error 408: Timeout" +msgstr "" + +#: templates/js/translated/api.js:258 templates/js/translated/modals.js:1156 +msgid "Connection timeout while requesting data from server" +msgstr "" + +#: templates/js/translated/api.js:261 +msgid "Error 503: Service Unavailable" +msgstr "" + +#: templates/js/translated/api.js:262 +msgid "The server is currently unavailable" +msgstr "" + +#: templates/js/translated/api.js:265 +msgid "Unhandled Error Code" +msgstr "" + +#: templates/js/translated/api.js:266 +msgid "Error code" +msgstr "" + +#: templates/js/translated/attachment.js:114 +msgid "All selected attachments will be deleted" +msgstr "" + +#: templates/js/translated/attachment.js:129 +msgid "Delete Attachments" +msgstr "" + +#: templates/js/translated/attachment.js:205 +msgid "Delete attachments" +msgstr "" + +#: templates/js/translated/attachment.js:253 +msgid "Attachment actions" +msgstr "" + +#: templates/js/translated/attachment.js:275 +msgid "No attachments found" +msgstr "" + +#: templates/js/translated/attachment.js:315 +msgid "Edit Attachment" +msgstr "" + +#: templates/js/translated/attachment.js:346 +msgid "Upload Date" +msgstr "" + +#: templates/js/translated/attachment.js:366 +msgid "Edit attachment" +msgstr "" + +#: templates/js/translated/attachment.js:374 +msgid "Delete attachment" +msgstr "" + +#: templates/js/translated/barcode.js:43 +msgid "Scan barcode data here using barcode scanner" +msgstr "" + +#: templates/js/translated/barcode.js:45 +msgid "Enter barcode data" +msgstr "" + +#: templates/js/translated/barcode.js:59 +msgid "Scan barcode using connected webcam" +msgstr "" + +#: templates/js/translated/barcode.js:138 +msgid "Enter optional notes for stock transfer" +msgstr "" + +#: templates/js/translated/barcode.js:139 +msgid "Enter notes" +msgstr "" + +#: templates/js/translated/barcode.js:188 +msgid "Server error" +msgstr "" + +#: templates/js/translated/barcode.js:217 +msgid "Unknown response from server" +msgstr "" + +#: templates/js/translated/barcode.js:252 +#: templates/js/translated/modals.js:1120 +msgid "Invalid server response" +msgstr "" + +#: templates/js/translated/barcode.js:372 +msgid "Scan barcode data" +msgstr "" + +#: templates/js/translated/barcode.js:420 templates/navbar.html:114 +msgid "Scan Barcode" +msgstr "" + +#: templates/js/translated/barcode.js:458 +msgid "No URL in response" +msgstr "" + +#: templates/js/translated/barcode.js:498 +msgid "This will remove the link to the associated barcode" +msgstr "" + +#: templates/js/translated/barcode.js:504 +msgid "Unlink" +msgstr "" + +#: templates/js/translated/barcode.js:567 templates/js/translated/stock.js:1155 +msgid "Remove stock item" +msgstr "" + +#: templates/js/translated/barcode.js:610 +msgid "Scan Stock Items Into Location" +msgstr "" + +#: templates/js/translated/barcode.js:612 +msgid "Scan stock item barcode to check in to this location" +msgstr "" + +#: templates/js/translated/barcode.js:615 +#: templates/js/translated/barcode.js:812 +msgid "Check In" +msgstr "" + +#: templates/js/translated/barcode.js:647 +msgid "No barcode provided" +msgstr "" + +#: templates/js/translated/barcode.js:687 +msgid "Stock Item already scanned" +msgstr "" + +#: templates/js/translated/barcode.js:691 +msgid "Stock Item already in this location" +msgstr "" + +#: templates/js/translated/barcode.js:698 +msgid "Added stock item" +msgstr "" + +#: templates/js/translated/barcode.js:707 +msgid "Barcode does not match valid stock item" +msgstr "" + +#: templates/js/translated/barcode.js:726 +msgid "Scan Stock Container Into Location" +msgstr "" + +#: templates/js/translated/barcode.js:728 +msgid "Scan stock container barcode to check in to this location" +msgstr "" + +#: templates/js/translated/barcode.js:762 +msgid "Barcode does not match valid stock location" +msgstr "" + +#: templates/js/translated/barcode.js:806 +msgid "Check Into Location" +msgstr "" + +#: templates/js/translated/barcode.js:875 +#: templates/js/translated/barcode.js:884 +msgid "Barcode does not match a valid location" +msgstr "" + +#: templates/js/translated/bom.js:78 +msgid "Create BOM Item" +msgstr "" + +#: templates/js/translated/bom.js:132 +msgid "Display row data" +msgstr "" + +#: templates/js/translated/bom.js:188 +msgid "Row Data" +msgstr "" + +#: templates/js/translated/bom.js:189 templates/js/translated/bom.js:700 +#: templates/js/translated/modals.js:74 templates/js/translated/modals.js:628 +#: templates/js/translated/modals.js:752 templates/js/translated/modals.js:1060 +#: templates/js/translated/purchase_order.js: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:2501 +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:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 +#: templates/js/translated/sales_order.js:1910 +msgid "No Stock Available" +msgstr "" + +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 +msgid "Includes variant and substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 +#: templates/js/translated/part.js:1256 +#: templates/js/translated/sales_order.js:1907 +msgid "Includes variant stock" +msgstr "" + +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 +msgid "Includes substitute stock" +msgstr "" + +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 +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:2486 +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:989 templates/js/translated/build.js:2342 +msgid "Allocated Quantity" +msgstr "" + +#: templates/js/translated/build.js:1003 +msgid "Location not specified" +msgstr "" + +#: templates/js/translated/build.js:1025 +msgid "Complete outputs" +msgstr "" + +#: templates/js/translated/build.js:1043 +msgid "Scrap outputs" +msgstr "" + +#: templates/js/translated/build.js:1061 +msgid "Delete outputs" +msgstr "" + +#: templates/js/translated/build.js:1115 +msgid "build output" +msgstr "" + +#: templates/js/translated/build.js:1116 +msgid "build outputs" +msgstr "" + +#: templates/js/translated/build.js:1120 +msgid "Build output actions" +msgstr "" + +#: templates/js/translated/build.js:1294 +msgid "No active build outputs found" +msgstr "" + +#: templates/js/translated/build.js:1387 +msgid "Allocated Lines" +msgstr "" + +#: templates/js/translated/build.js:1401 +msgid "Required Tests" +msgstr "" + +#: templates/js/translated/build.js:1573 +#: templates/js/translated/purchase_order.js:611 +#: templates/js/translated/sales_order.js:1171 +msgid "Select Parts" +msgstr "" + +#: templates/js/translated/build.js:1574 +#: templates/js/translated/sales_order.js:1172 +msgid "You must select at least one part to allocate" +msgstr "" + +#: templates/js/translated/build.js:1637 +#: templates/js/translated/sales_order.js:1121 +msgid "Specify stock allocation quantity" +msgstr "" + +#: templates/js/translated/build.js:1714 +msgid "All Parts Allocated" +msgstr "" + +#: templates/js/translated/build.js:1715 +msgid "All selected parts have been fully allocated" +msgstr "" + +#: templates/js/translated/build.js:1729 +#: templates/js/translated/sales_order.js:1186 +msgid "Select source location (leave blank to take from all locations)" +msgstr "" + +#: templates/js/translated/build.js:1757 +msgid "Allocate Stock Items to Build Order" +msgstr "" + +#: templates/js/translated/build.js:1768 +#: templates/js/translated/sales_order.js:1283 +msgid "No matching stock locations" +msgstr "" + +#: templates/js/translated/build.js:1841 +#: templates/js/translated/sales_order.js:1362 +msgid "No matching stock items" +msgstr "" + +#: templates/js/translated/build.js:1938 +msgid "Automatic Stock Allocation" +msgstr "" + +#: templates/js/translated/build.js:1939 +msgid "Stock items will be automatically allocated to this build order, according to the provided guidelines" +msgstr "" + +#: templates/js/translated/build.js:1941 +msgid "If a location is specified, stock will only be allocated from that location" +msgstr "" + +#: templates/js/translated/build.js:1942 +msgid "If stock is considered interchangeable, it will be allocated from the first location it is found" +msgstr "" + +#: templates/js/translated/build.js:1943 +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:1974 +msgid "Allocate Stock Items" +msgstr "" + +#: templates/js/translated/build.js:2080 +msgid "No builds matching query" +msgstr "" + +#: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 +#: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 +#: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 +msgid "Select" +msgstr "" + +#: templates/js/translated/build.js:2129 +msgid "Build order is overdue" +msgstr "" + +#: templates/js/translated/build.js:2175 +msgid "Progress" +msgstr "" + +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 +msgid "No user information" +msgstr "" + +#: templates/js/translated/build.js:2387 +#: templates/js/translated/sales_order.js:1646 +msgid "Edit stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2388 +#: templates/js/translated/sales_order.js:1647 +msgid "Delete stock allocation" +msgstr "" + +#: templates/js/translated/build.js:2403 +msgid "Edit Allocation" +msgstr "" + +#: templates/js/translated/build.js:2415 +msgid "Remove Allocation" +msgstr "" + +#: templates/js/translated/build.js:2456 +msgid "build line" +msgstr "" + +#: templates/js/translated/build.js:2457 +msgid "build lines" +msgstr "" + +#: templates/js/translated/build.js:2475 +msgid "No build lines found" +msgstr "" + +#: templates/js/translated/build.js:2505 templates/js/translated/part.js:790 +#: templates/js/translated/part.js:1202 +msgid "Trackable part" +msgstr "" + +#: templates/js/translated/build.js:2540 +msgid "Unit Quantity" +msgstr "" + +#: templates/js/translated/build.js:2592 +#: templates/js/translated/sales_order.js:1915 +msgid "Sufficient stock available" +msgstr "" + +#: templates/js/translated/build.js:2647 +msgid "Consumable Item" +msgstr "" + +#: templates/js/translated/build.js:2652 +msgid "Tracked item" +msgstr "" + +#: templates/js/translated/build.js:2659 +#: templates/js/translated/sales_order.js:2016 +msgid "Build stock" +msgstr "" + +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 +msgid "Order stock" +msgstr "" + +#: templates/js/translated/build.js:2668 +#: templates/js/translated/sales_order.js:2010 +msgid "Allocate stock" +msgstr "" + +#: templates/js/translated/build.js:2672 +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:465 +msgid "Add new Company" +msgstr "" + +#: templates/js/translated/company.js:536 +msgid "Parts Supplied" +msgstr "" + +#: templates/js/translated/company.js:545 +msgid "Parts Manufactured" +msgstr "" + +#: templates/js/translated/company.js:560 +msgid "No company information found" +msgstr "" + +#: templates/js/translated/company.js:609 +msgid "Create New Contact" +msgstr "" + +#: templates/js/translated/company.js:625 +#: templates/js/translated/company.js:748 +msgid "Edit Contact" +msgstr "" + +#: templates/js/translated/company.js:662 +msgid "All selected contacts will be deleted" +msgstr "" + +#: templates/js/translated/company.js:668 +#: templates/js/translated/company.js:732 +msgid "Role" +msgstr "" + +#: templates/js/translated/company.js:676 +msgid "Delete Contacts" +msgstr "" + +#: templates/js/translated/company.js:707 +msgid "No contacts found" +msgstr "" + +#: templates/js/translated/company.js:720 +msgid "Phone Number" +msgstr "" + +#: templates/js/translated/company.js:726 +msgid "Email Address" +msgstr "" + +#: templates/js/translated/company.js:752 +msgid "Delete Contact" +msgstr "" + +#: templates/js/translated/company.js:849 +msgid "Create New Address" +msgstr "" + +#: templates/js/translated/company.js:864 +#: templates/js/translated/company.js:1025 +msgid "Edit Address" +msgstr "" + +#: templates/js/translated/company.js:899 +msgid "All selected addresses will be deleted" +msgstr "" + +#: templates/js/translated/company.js:913 +msgid "Delete Addresses" +msgstr "" + +#: templates/js/translated/company.js:940 +msgid "No addresses found" +msgstr "" + +#: templates/js/translated/company.js:979 +msgid "Postal city" +msgstr "" + +#: templates/js/translated/company.js:985 +msgid "State/province" +msgstr "" + +#: templates/js/translated/company.js:997 +msgid "Courier notes" +msgstr "" + +#: templates/js/translated/company.js:1003 +msgid "Internal notes" +msgstr "" + +#: templates/js/translated/company.js:1029 +msgid "Delete Address" +msgstr "" + +#: templates/js/translated/company.js:1102 +msgid "All selected manufacturer parts will be deleted" +msgstr "" + +#: templates/js/translated/company.js:1117 +msgid "Delete Manufacturer Parts" +msgstr "" + +#: templates/js/translated/company.js:1151 +msgid "All selected parameters will be deleted" +msgstr "" + +#: templates/js/translated/company.js:1165 +msgid "Delete Parameters" +msgstr "" + +#: templates/js/translated/company.js:1181 +#: templates/js/translated/company.js:1469 templates/js/translated/part.js:2244 +msgid "Order parts" +msgstr "" + +#: templates/js/translated/company.js:1198 +msgid "Delete manufacturer parts" +msgstr "" + +#: templates/js/translated/company.js:1230 +msgid "Manufacturer part actions" +msgstr "" + +#: templates/js/translated/company.js:1249 +msgid "No manufacturer parts found" +msgstr "" + +#: templates/js/translated/company.js:1269 +#: templates/js/translated/company.js:1557 templates/js/translated/part.js:798 +#: templates/js/translated/part.js:1210 +msgid "Template part" +msgstr "" + +#: templates/js/translated/company.js:1273 +#: templates/js/translated/company.js:1561 templates/js/translated/part.js:802 +#: templates/js/translated/part.js:1214 +msgid "Assembled part" +msgstr "" + +#: templates/js/translated/company.js:1393 templates/js/translated/part.js:1464 +msgid "No parameters found" +msgstr "" + +#: templates/js/translated/company.js:1428 templates/js/translated/part.js:1527 +msgid "Edit parameter" +msgstr "" + +#: templates/js/translated/company.js:1429 templates/js/translated/part.js:1528 +msgid "Delete parameter" +msgstr "" + +#: templates/js/translated/company.js:1446 templates/js/translated/part.js:1433 +msgid "Edit Parameter" +msgstr "" + +#: templates/js/translated/company.js:1455 templates/js/translated/part.js:1549 +msgid "Delete Parameter" +msgstr "" + +#: templates/js/translated/company.js:1486 +msgid "Delete supplier parts" +msgstr "" + +#: templates/js/translated/company.js:1536 +msgid "No supplier parts found" +msgstr "" + +#: templates/js/translated/company.js:1654 +msgid "Base Units" +msgstr "" + +#: templates/js/translated/company.js:1684 +msgid "Availability" +msgstr "" + +#: templates/js/translated/company.js:1715 +msgid "Edit supplier part" +msgstr "" + +#: templates/js/translated/company.js:1716 +msgid "Delete supplier part" +msgstr "" + +#: templates/js/translated/company.js:1769 +#: templates/js/translated/pricing.js:694 +msgid "Delete Price Break" +msgstr "" + +#: templates/js/translated/company.js:1779 +#: templates/js/translated/pricing.js:712 +msgid "Edit Price Break" +msgstr "" + +#: templates/js/translated/company.js:1794 +msgid "No price break information found" +msgstr "" + +#: templates/js/translated/company.js:1823 +msgid "Last updated" +msgstr "" + +#: templates/js/translated/company.js:1830 +msgid "Edit price break" +msgstr "" + +#: templates/js/translated/company.js:1831 +msgid "Delete price break" +msgstr "" + +#: templates/js/translated/filters.js:186 +#: templates/js/translated/filters.js:672 +msgid "true" +msgstr "" + +#: templates/js/translated/filters.js:190 +#: templates/js/translated/filters.js:673 +msgid "false" +msgstr "" + +#: templates/js/translated/filters.js:214 +msgid "Select filter" +msgstr "" + +#: templates/js/translated/filters.js:437 +msgid "Print Labels" +msgstr "" + +#: templates/js/translated/filters.js:441 +msgid "Print Reports" +msgstr "" + +#: templates/js/translated/filters.js:453 +msgid "Download table data" +msgstr "" + +#: templates/js/translated/filters.js:460 +msgid "Reload table data" +msgstr "" + +#: templates/js/translated/filters.js:469 +msgid "Add new filter" +msgstr "" + +#: templates/js/translated/filters.js:477 +msgid "Clear all filters" +msgstr "" + +#: templates/js/translated/filters.js:582 +msgid "Create filter" +msgstr "" + +#: templates/js/translated/forms.js: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:1473 templates/modals.html:19 +#: templates/modals.html:43 +msgid "Form errors exist" +msgstr "" + +#: templates/js/translated/forms.js:1971 +msgid "No results found" +msgstr "" + +#: templates/js/translated/forms.js:2275 templates/js/translated/search.js:239 +msgid "Searching" +msgstr "" + +#: templates/js/translated/forms.js:2489 +msgid "Clear input" +msgstr "" + +#: templates/js/translated/forms.js:3091 +msgid "File Column" +msgstr "" + +#: templates/js/translated/forms.js:3091 +msgid "Field Name" +msgstr "" + +#: templates/js/translated/forms.js:3103 +msgid "Select Columns" +msgstr "" + +#: templates/js/translated/helpers.js:77 +msgid "YES" +msgstr "" + +#: templates/js/translated/helpers.js:80 +msgid "NO" +msgstr "" + +#: templates/js/translated/helpers.js:93 +msgid "True" +msgstr "" + +#: templates/js/translated/helpers.js:94 +msgid "False" +msgstr "" + +#: templates/js/translated/index.js:104 +msgid "No parts required for builds" +msgstr "" + +#: templates/js/translated/label.js:53 templates/js/translated/report.js:123 +msgid "Select Items" +msgstr "" + +#: templates/js/translated/label.js:54 +msgid "No items selected for printing" +msgstr "" + +#: templates/js/translated/label.js:72 +msgid "No Labels Found" +msgstr "" + +#: templates/js/translated/label.js:73 +msgid "No label templates found which match the selected items" +msgstr "" + +#: templates/js/translated/label.js:97 +msgid "selected" +msgstr "" + +#: templates/js/translated/label.js:133 +msgid "Printing Options" +msgstr "" + +#: templates/js/translated/label.js:148 +msgid "Print label" +msgstr "" + +#: templates/js/translated/label.js:148 +msgid "Print labels" +msgstr "" + +#: templates/js/translated/label.js:149 +msgid "Print" +msgstr "" + +#: templates/js/translated/label.js:155 +msgid "Select label template" +msgstr "" + +#: templates/js/translated/label.js:168 +msgid "Select plugin" +msgstr "" + +#: templates/js/translated/label.js:187 +msgid "Labels sent to printer" +msgstr "" + +#: templates/js/translated/modals.js:58 templates/js/translated/modals.js:158 +#: templates/js/translated/modals.js:683 +msgid "Cancel" +msgstr "" + +#: templates/js/translated/modals.js:63 templates/js/translated/modals.js:157 +#: templates/js/translated/modals.js:751 templates/js/translated/modals.js:1059 +#: templates/modals.html:28 templates/modals.html:51 +msgid "Submit" +msgstr "" + +#: templates/js/translated/modals.js:156 +msgid "Form Title" +msgstr "" + +#: templates/js/translated/modals.js:445 +msgid "Waiting for server..." +msgstr "" + +#: templates/js/translated/modals.js:596 +msgid "Show Error Information" +msgstr "" + +#: templates/js/translated/modals.js:682 +msgid "Accept" +msgstr "" + +#: templates/js/translated/modals.js:740 +msgid "Loading Data" +msgstr "" + +#: templates/js/translated/modals.js:1011 +msgid "Invalid response from server" +msgstr "" + +#: templates/js/translated/modals.js:1011 +msgid "Form data missing from server response" +msgstr "" + +#: templates/js/translated/modals.js:1023 +msgid "Error posting form data" +msgstr "" + +#: templates/js/translated/modals.js:1120 +msgid "JSON response missing form data" +msgstr "" + +#: templates/js/translated/modals.js:1135 +msgid "Error 400: Bad Request" +msgstr "" + +#: templates/js/translated/modals.js:1136 +msgid "Server returned error code 400" +msgstr "" + +#: templates/js/translated/modals.js:1159 +msgid "Error requesting form data" +msgstr "" + +#: templates/js/translated/news.js:33 +msgid "No news found" +msgstr "" + +#: templates/js/translated/news.js:38 +#: templates/js/translated/notification.js:46 +#: templates/js/translated/part.js:1604 +msgid "ID" +msgstr "" + +#: templates/js/translated/notification.js:52 +msgid "Age" +msgstr "" + +#: templates/js/translated/notification.js:65 +msgid "Notification" +msgstr "" + +#: templates/js/translated/notification.js:224 +msgid "Mark as unread" +msgstr "" + +#: templates/js/translated/notification.js:228 +msgid "Mark as read" +msgstr "" + +#: templates/js/translated/notification.js:254 +msgid "No unread notifications" +msgstr "" + +#: templates/js/translated/notification.js:296 templates/notifications.html:12 +msgid "Notifications will load here" +msgstr "" + +#: templates/js/translated/order.js:89 +msgid "Add Extra Line Item" +msgstr "" + +#: templates/js/translated/order.js:126 +msgid "Export Order" +msgstr "" + +#: templates/js/translated/order.js:241 +msgid "Duplicate Line" +msgstr "" + +#: templates/js/translated/order.js:255 +msgid "Edit Line" +msgstr "" + +#: templates/js/translated/order.js:268 +msgid "Delete Line" +msgstr "" + +#: templates/js/translated/order.js:281 +#: templates/js/translated/purchase_order.js:1991 +msgid "No line items found" +msgstr "" + +#: templates/js/translated/order.js:369 +msgid "Duplicate line" +msgstr "" + +#: templates/js/translated/order.js:370 +msgid "Edit line" +msgstr "" + +#: templates/js/translated/order.js:374 +msgid "Delete line" +msgstr "" + +#: templates/js/translated/part.js:90 +msgid "Part Attributes" +msgstr "" + +#: templates/js/translated/part.js:94 +msgid "Part Creation Options" +msgstr "" + +#: templates/js/translated/part.js:98 +msgid "Part Duplication Options" +msgstr "" + +#: templates/js/translated/part.js:121 +msgid "Add Part Category" +msgstr "" + +#: templates/js/translated/part.js:308 +msgid "Parent part category" +msgstr "" + +#: templates/js/translated/part.js:332 templates/js/translated/stock.js:175 +msgid "Icon (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/part.js:352 +msgid "Create Part Category" +msgstr "" + +#: templates/js/translated/part.js:355 +msgid "Create new category after this one" +msgstr "" + +#: templates/js/translated/part.js:356 +msgid "Part category created" +msgstr "" + +#: templates/js/translated/part.js:370 +msgid "Edit Part Category" +msgstr "" + +#: templates/js/translated/part.js:383 +msgid "Are you sure you want to delete this part category?" +msgstr "" + +#: templates/js/translated/part.js:388 +msgid "Move to parent category" +msgstr "" + +#: templates/js/translated/part.js:397 +msgid "Delete Part Category" +msgstr "" + +#: templates/js/translated/part.js:401 +msgid "Action for parts in this category" +msgstr "" + +#: templates/js/translated/part.js:406 +msgid "Action for child categories" +msgstr "" + +#: templates/js/translated/part.js:430 +msgid "Create Part" +msgstr "" + +#: templates/js/translated/part.js:432 +msgid "Create another part after this one" +msgstr "" + +#: templates/js/translated/part.js:433 +msgid "Part created successfully" +msgstr "" + +#: templates/js/translated/part.js:461 +msgid "Edit Part" +msgstr "" + +#: templates/js/translated/part.js:463 +msgid "Part edited" +msgstr "" + +#: templates/js/translated/part.js:474 +msgid "Create Part Variant" +msgstr "" + +#: templates/js/translated/part.js:531 +msgid "Active Part" +msgstr "" + +#: templates/js/translated/part.js:532 +msgid "Part cannot be deleted as it is currently active" +msgstr "" + +#: templates/js/translated/part.js:546 +msgid "Deleting this part cannot be reversed" +msgstr "" + +#: templates/js/translated/part.js:548 +msgid "Any stock items for this part will be deleted" +msgstr "" + +#: templates/js/translated/part.js:549 +msgid "This part will be removed from any Bills of Material" +msgstr "" + +#: templates/js/translated/part.js:550 +msgid "All manufacturer and supplier information for this part will be deleted" +msgstr "" + +#: templates/js/translated/part.js:557 +msgid "Delete Part" +msgstr "" + +#: templates/js/translated/part.js:593 +msgid "You are subscribed to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:595 +msgid "You have subscribed to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:600 +msgid "Subscribe to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:602 +msgid "You have unsubscribed to notifications for this item" +msgstr "" + +#: templates/js/translated/part.js:619 +msgid "Validating the BOM will mark each line item as valid" +msgstr "" + +#: templates/js/translated/part.js:629 +msgid "Validate Bill of Materials" +msgstr "" + +#: templates/js/translated/part.js:632 +msgid "Validated Bill of Materials" +msgstr "" + +#: templates/js/translated/part.js:657 +msgid "Copy Bill of Materials" +msgstr "" + +#: templates/js/translated/part.js:685 +#: templates/js/translated/table_filters.js:747 +msgid "Low stock" +msgstr "" + +#: templates/js/translated/part.js:688 +msgid "No stock available" +msgstr "" + +#: templates/js/translated/part.js:748 +msgid "Demand" +msgstr "" + +#: templates/js/translated/part.js:771 +msgid "Unit" +msgstr "" + +#: templates/js/translated/part.js:794 templates/js/translated/part.js:1206 +msgid "Virtual part" +msgstr "" + +#: templates/js/translated/part.js:806 +msgid "Subscribed part" +msgstr "" + +#: templates/js/translated/part.js:810 +msgid "Salable part" +msgstr "" + +#: templates/js/translated/part.js:889 +msgid "Schedule generation of a new stocktake report." +msgstr "" + +#: templates/js/translated/part.js:889 +msgid "Once complete, the stocktake report will be available for download." +msgstr "" + +#: templates/js/translated/part.js:897 +msgid "Generate Stocktake Report" +msgstr "" + +#: templates/js/translated/part.js:901 +msgid "Stocktake report scheduled" +msgstr "" + +#: templates/js/translated/part.js:1050 +msgid "No stocktake information available" +msgstr "" + +#: templates/js/translated/part.js:1108 templates/js/translated/part.js:1144 +msgid "Edit Stocktake Entry" +msgstr "" + +#: templates/js/translated/part.js:1112 templates/js/translated/part.js:1154 +msgid "Delete Stocktake Entry" +msgstr "" + +#: templates/js/translated/part.js:1281 +msgid "No variants found" +msgstr "" + +#: templates/js/translated/part.js:1599 +msgid "No part parameter templates found" +msgstr "" + +#: templates/js/translated/part.js:1662 +msgid "Edit Part Parameter Template" +msgstr "" + +#: templates/js/translated/part.js:1674 +msgid "Any parameters which reference this template will also be deleted" +msgstr "" + +#: templates/js/translated/part.js:1682 +msgid "Delete Part Parameter Template" +msgstr "" + +#: templates/js/translated/part.js:1716 +#: templates/js/translated/purchase_order.js:1655 +msgid "No purchase orders found" +msgstr "" + +#: templates/js/translated/part.js:1860 +#: templates/js/translated/purchase_order.js:2154 +#: templates/js/translated/return_order.js:756 +#: templates/js/translated/sales_order.js:1875 +msgid "This line item is overdue" +msgstr "" + +#: templates/js/translated/part.js:1906 +#: templates/js/translated/purchase_order.js:2221 +msgid "Receive line item" +msgstr "" + +#: templates/js/translated/part.js:1969 +msgid "Delete part relationship" +msgstr "" + +#: templates/js/translated/part.js:1991 +msgid "Delete Part Relationship" +msgstr "" + +#: templates/js/translated/part.js:2079 templates/js/translated/part.js:2506 +msgid "No parts found" +msgstr "" + +#: templates/js/translated/part.js:2200 +msgid "Set the part category for the selected parts" +msgstr "" + +#: templates/js/translated/part.js:2205 +msgid "Set Part Category" +msgstr "" + +#: templates/js/translated/part.js:2235 +msgid "Set category" +msgstr "" + +#: templates/js/translated/part.js:2287 +msgid "part" +msgstr "" + +#: templates/js/translated/part.js:2288 +msgid "parts" +msgstr "" + +#: templates/js/translated/part.js:2384 +msgid "No category" +msgstr "" + +#: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 +#: templates/js/translated/stock.js: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:2864 +msgid "No test templates matching query" +msgstr "" + +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 +msgid "results" +msgstr "" + +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 +msgid "Edit test result" +msgstr "" + +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 +msgid "Delete test result" +msgstr "" + +#: templates/js/translated/part.js:2941 +msgid "This test is defined for a parent part" +msgstr "" + +#: templates/js/translated/part.js:2957 +msgid "Edit Test Result Template" +msgstr "" + +#: templates/js/translated/part.js:2971 +msgid "Delete Test Result Template" +msgstr "" + +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 +msgid "No date specified" +msgstr "" + +#: templates/js/translated/part.js:3053 +msgid "Specified date is in the past" +msgstr "" + +#: templates/js/translated/part.js:3059 +msgid "Speculative" +msgstr "" + +#: templates/js/translated/part.js:3109 +msgid "No scheduling information available for this part" +msgstr "" + +#: templates/js/translated/part.js:3115 +msgid "Error fetching scheduling information for this part" +msgstr "" + +#: templates/js/translated/part.js:3211 +msgid "Scheduled Stock Quantities" +msgstr "" + +#: templates/js/translated/part.js:3227 +msgid "Maximum Quantity" +msgstr "" + +#: templates/js/translated/part.js:3272 +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:500 +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 +#: templates/js/translated/sales_order.js:514 +msgid "Completing this order means that the order and line items will no longer be editable." +msgstr "" + +#: templates/js/translated/purchase_order.js: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 +msgid "Select Line Items" +msgstr "" + +#: templates/js/translated/purchase_order.js:1074 +#: templates/js/translated/return_order.js:492 +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:561 +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:1682 +#: templates/js/translated/return_order.js:286 +#: templates/js/translated/sales_order.js:774 +#: templates/js/translated/sales_order.js:998 +msgid "Order is overdue" +msgstr "" + +#: templates/js/translated/purchase_order.js:1748 +#: templates/js/translated/return_order.js:354 +#: templates/js/translated/sales_order.js:851 +#: templates/js/translated/sales_order.js:1011 +msgid "Items" +msgstr "" + +#: templates/js/translated/purchase_order.js:1844 +msgid "All selected Line items will be deleted" +msgstr "" + +#: templates/js/translated/purchase_order.js:1862 +msgid "Delete selected Line items?" +msgstr "" + +#: templates/js/translated/purchase_order.js:1917 +#: templates/js/translated/sales_order.js:2070 +msgid "Duplicate Line Item" +msgstr "" + +#: templates/js/translated/purchase_order.js:1932 +#: templates/js/translated/return_order.js:476 +#: templates/js/translated/return_order.js:669 +#: templates/js/translated/sales_order.js:2083 +msgid "Edit Line Item" +msgstr "" + +#: templates/js/translated/purchase_order.js:1943 +#: templates/js/translated/return_order.js:682 +#: templates/js/translated/sales_order.js:2094 +msgid "Delete Line Item" +msgstr "" + +#: templates/js/translated/purchase_order.js:2225 +#: templates/js/translated/sales_order.js:2024 +msgid "Duplicate line item" +msgstr "" + +#: templates/js/translated/purchase_order.js:2226 +#: templates/js/translated/return_order.js:801 +#: templates/js/translated/sales_order.js:2025 +msgid "Edit line item" +msgstr "" + +#: templates/js/translated/purchase_order.js:2227 +#: templates/js/translated/return_order.js:805 +#: templates/js/translated/sales_order.js:2031 +msgid "Delete line item" +msgstr "" + +#: templates/js/translated/report.js:63 +msgid "items selected" +msgstr "" + +#: templates/js/translated/report.js:71 +msgid "Select Report Template" +msgstr "" + +#: templates/js/translated/report.js:86 +msgid "Select Test Report Template" +msgstr "" + +#: templates/js/translated/report.js:140 +msgid "No Reports Found" +msgstr "" + +#: templates/js/translated/report.js:141 +msgid "No report templates found which match the selected items" +msgstr "" + +#: templates/js/translated/return_order.js:60 +#: templates/js/translated/sales_order.js:86 +msgid "Add Customer" +msgstr "" + +#: templates/js/translated/return_order.js:134 +msgid "Create Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:149 +msgid "Edit Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:169 +msgid "Issue Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:186 +msgid "Are you sure you wish to cancel this Return Order?" +msgstr "" + +#: templates/js/translated/return_order.js:193 +msgid "Cancel Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:218 +msgid "Complete Return Order" +msgstr "" + +#: templates/js/translated/return_order.js:266 +msgid "No return orders found" +msgstr "" + +#: templates/js/translated/return_order.js:300 +#: templates/js/translated/sales_order.js:788 +msgid "Invalid Customer" +msgstr "" + +#: templates/js/translated/return_order.js:562 +msgid "Receive Return Order Items" +msgstr "" + +#: templates/js/translated/return_order.js:693 +#: templates/js/translated/sales_order.js:2231 +msgid "No matching line items" +msgstr "" + +#: templates/js/translated/return_order.js:798 +msgid "Mark item as received" +msgstr "" + +#: templates/js/translated/sales_order.js:161 +msgid "Create Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:176 +msgid "Edit Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:291 +msgid "No stock items have been allocated to this shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:296 +msgid "The following stock items will be shipped" +msgstr "" + +#: templates/js/translated/sales_order.js:336 +msgid "Complete Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:360 +msgid "Confirm Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:416 +msgid "No pending shipments found" +msgstr "" + +#: templates/js/translated/sales_order.js:420 +msgid "No stock items have been allocated to pending shipments" +msgstr "" + +#: templates/js/translated/sales_order.js:430 +msgid "Complete Shipments" +msgstr "" + +#: templates/js/translated/sales_order.js:452 +msgid "Skip" +msgstr "" + +#: templates/js/translated/sales_order.js:513 +msgid "This order has line items which have not been completed." +msgstr "" + +#: templates/js/translated/sales_order.js:535 +msgid "Issue this Sales Order?" +msgstr "" + +#: templates/js/translated/sales_order.js:540 +msgid "Issue Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:559 +msgid "Cancel Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:564 +msgid "Cancelling this order means that the order will no longer be editable." +msgstr "" + +#: templates/js/translated/sales_order.js:618 +msgid "Create New Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:728 +msgid "No sales orders found" +msgstr "" + +#: templates/js/translated/sales_order.js:908 +msgid "Edit shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:911 +msgid "Complete shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:916 +msgid "Delete shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:933 +msgid "Edit Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:948 +msgid "Delete Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:981 +msgid "No matching shipments found" +msgstr "" + +#: templates/js/translated/sales_order.js:1006 +msgid "Shipment Reference" +msgstr "" + +#: templates/js/translated/sales_order.js:1030 +#: templates/js/translated/sales_order.js:1529 +msgid "Not shipped" +msgstr "" + +#: templates/js/translated/sales_order.js:1048 +msgid "Tracking" +msgstr "" + +#: templates/js/translated/sales_order.js:1052 +msgid "Invoice" +msgstr "" + +#: templates/js/translated/sales_order.js:1219 +msgid "Add Shipment" +msgstr "" + +#: templates/js/translated/sales_order.js:1270 +msgid "Confirm stock allocation" +msgstr "" + +#: templates/js/translated/sales_order.js:1271 +msgid "Allocate Stock Items to Sales Order" +msgstr "" + +#: templates/js/translated/sales_order.js:1477 +msgid "No sales order allocations found" +msgstr "" + +#: templates/js/translated/sales_order.js:1569 +msgid "Edit Stock Allocation" +msgstr "" + +#: templates/js/translated/sales_order.js:1583 +msgid "Confirm Delete Operation" +msgstr "" + +#: templates/js/translated/sales_order.js:1584 +msgid "Delete Stock Allocation" +msgstr "" + +#: templates/js/translated/sales_order.js:1623 +#: templates/js/translated/sales_order.js:1710 +#: templates/js/translated/stock.js:1773 +msgid "Shipped to customer" +msgstr "" + +#: templates/js/translated/sales_order.js:1631 +#: templates/js/translated/sales_order.js:1719 +msgid "Stock location not specified" +msgstr "" + +#: templates/js/translated/sales_order.js:2008 +msgid "Allocate serial numbers" +msgstr "" + +#: templates/js/translated/sales_order.js:2012 +msgid "Purchase stock" +msgstr "" + +#: templates/js/translated/sales_order.js:2021 +#: templates/js/translated/sales_order.js:2209 +msgid "Calculate price" +msgstr "" + +#: templates/js/translated/sales_order.js:2035 +msgid "Cannot be deleted as items have been shipped" +msgstr "" + +#: templates/js/translated/sales_order.js:2038 +msgid "Cannot be deleted as items have been allocated" +msgstr "" + +#: templates/js/translated/sales_order.js:2109 +msgid "Allocate Serial Numbers" +msgstr "" + +#: templates/js/translated/sales_order.js:2217 +msgid "Update Unit Price" +msgstr "" + +#: templates/js/translated/search.js:270 +msgid "No results" +msgstr "" + +#: templates/js/translated/search.js:292 templates/search.html:25 +msgid "Enter search query" +msgstr "" + +#: templates/js/translated/search.js:342 +msgid "result" +msgstr "" + +#: templates/js/translated/search.js:352 +msgid "Minimize results" +msgstr "" + +#: templates/js/translated/search.js:355 +msgid "Remove results" +msgstr "" + +#: templates/js/translated/stock.js:98 +msgid "Serialize Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:129 +msgid "Confirm Stock Serialization" +msgstr "" + +#: templates/js/translated/stock.js:139 +msgid "Default icon for all locations that have no icon set (optional) - Explore all available icons on" +msgstr "" + +#: templates/js/translated/stock.js:152 +msgid "Parent stock location" +msgstr "" + +#: templates/js/translated/stock.js:166 +msgid "Add Location type" +msgstr "" + +#: templates/js/translated/stock.js:202 +msgid "Edit Stock Location" +msgstr "" + +#: templates/js/translated/stock.js:217 +msgid "New Stock Location" +msgstr "" + +#: templates/js/translated/stock.js:219 +msgid "Create another location after this one" +msgstr "" + +#: templates/js/translated/stock.js:220 +msgid "Stock location created" +msgstr "" + +#: templates/js/translated/stock.js:234 +msgid "Are you sure you want to delete this stock location?" +msgstr "" + +#: templates/js/translated/stock.js:241 +msgid "Move to parent stock location" +msgstr "" + +#: templates/js/translated/stock.js:250 +msgid "Delete Stock Location" +msgstr "" + +#: templates/js/translated/stock.js:254 +msgid "Action for stock items in this stock location" +msgstr "" + +#: templates/js/translated/stock.js:259 +msgid "Action for sub-locations" +msgstr "" + +#: templates/js/translated/stock.js:313 +msgid "This part cannot be serialized" +msgstr "" + +#: templates/js/translated/stock.js:349 +msgid "Add given quantity as packs instead of individual items" +msgstr "" + +#: templates/js/translated/stock.js:362 +msgid "Enter initial quantity for this stock item" +msgstr "" + +#: templates/js/translated/stock.js:368 +msgid "Enter serial numbers for new stock (or leave blank)" +msgstr "" + +#: templates/js/translated/stock.js:439 +msgid "Stock item duplicated" +msgstr "" + +#: templates/js/translated/stock.js:459 +msgid "Duplicate Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:475 +msgid "Are you sure you want to delete this stock item?" +msgstr "" + +#: templates/js/translated/stock.js:480 +msgid "Delete Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:501 +msgid "Edit Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:543 +msgid "Create another item after this one" +msgstr "" + +#: templates/js/translated/stock.js:555 +msgid "Created new stock item" +msgstr "" + +#: templates/js/translated/stock.js:568 +msgid "Created multiple stock items" +msgstr "" + +#: templates/js/translated/stock.js:593 +msgid "Find Serial Number" +msgstr "" + +#: templates/js/translated/stock.js:597 templates/js/translated/stock.js:598 +msgid "Enter serial number" +msgstr "" + +#: templates/js/translated/stock.js:614 +msgid "Enter a serial number" +msgstr "" + +#: templates/js/translated/stock.js:634 +msgid "No matching serial number" +msgstr "" + +#: templates/js/translated/stock.js:643 +msgid "More than one matching result found" +msgstr "" + +#: templates/js/translated/stock.js:751 +msgid "Confirm stock assignment" +msgstr "" + +#: templates/js/translated/stock.js:752 +msgid "Assign Stock to Customer" +msgstr "" + +#: templates/js/translated/stock.js:829 +msgid "Warning: Merge operation cannot be reversed" +msgstr "" + +#: templates/js/translated/stock.js:830 +msgid "Some information will be lost when merging stock items" +msgstr "" + +#: templates/js/translated/stock.js:832 +msgid "Stock transaction history will be deleted for merged items" +msgstr "" + +#: templates/js/translated/stock.js:833 +msgid "Supplier part information will be deleted for merged items" +msgstr "" + +#: templates/js/translated/stock.js:928 +msgid "Confirm stock item merge" +msgstr "" + +#: templates/js/translated/stock.js:929 +msgid "Merge Stock Items" +msgstr "" + +#: templates/js/translated/stock.js:1024 +msgid "Transfer Stock" +msgstr "" + +#: templates/js/translated/stock.js:1025 +msgid "Move" +msgstr "" + +#: templates/js/translated/stock.js:1031 +msgid "Count Stock" +msgstr "" + +#: templates/js/translated/stock.js:1032 +msgid "Count" +msgstr "" + +#: templates/js/translated/stock.js:1036 +msgid "Remove Stock" +msgstr "" + +#: templates/js/translated/stock.js:1037 +msgid "Take" +msgstr "" + +#: templates/js/translated/stock.js:1041 +msgid "Add Stock" +msgstr "" + +#: templates/js/translated/stock.js:1042 users/models.py:401 +msgid "Add" +msgstr "" + +#: templates/js/translated/stock.js:1046 +msgid "Delete Stock" +msgstr "" + +#: templates/js/translated/stock.js:1143 +msgid "Quantity cannot be adjusted for serialized stock" +msgstr "" + +#: templates/js/translated/stock.js:1143 +msgid "Specify stock quantity" +msgstr "" + +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 +msgid "Select Stock Items" +msgstr "" + +#: templates/js/translated/stock.js:1178 +msgid "Select at least one available stock item" +msgstr "" + +#: templates/js/translated/stock.js:1224 +msgid "Confirm stock adjustment" +msgstr "" + +#: templates/js/translated/stock.js:1360 +msgid "PASS" +msgstr "" + +#: templates/js/translated/stock.js:1362 +msgid "FAIL" +msgstr "" + +#: templates/js/translated/stock.js:1367 +msgid "NO RESULT" +msgstr "" + +#: templates/js/translated/stock.js:1447 +msgid "Pass test" +msgstr "" + +#: templates/js/translated/stock.js:1450 +msgid "Add test result" +msgstr "" + +#: templates/js/translated/stock.js:1473 +msgid "No test results found" +msgstr "" + +#: templates/js/translated/stock.js:1537 +msgid "Test Date" +msgstr "" + +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 +msgid "Edit Test Result" +msgstr "" + +#: templates/js/translated/stock.js:1733 +msgid "Delete Test Result" +msgstr "" + +#: templates/js/translated/stock.js:1765 +msgid "In production" +msgstr "" + +#: templates/js/translated/stock.js:1769 +msgid "Installed in Stock Item" +msgstr "" + +#: templates/js/translated/stock.js:1777 +msgid "Assigned to Sales Order" +msgstr "" + +#: templates/js/translated/stock.js:1783 +msgid "No stock location set" +msgstr "" + +#: templates/js/translated/stock.js:1839 +msgid "Change stock status" +msgstr "" + +#: templates/js/translated/stock.js:1848 +msgid "Merge stock" +msgstr "" + +#: templates/js/translated/stock.js:1897 +msgid "Delete stock" +msgstr "" + +#: templates/js/translated/stock.js:1952 +msgid "stock items" +msgstr "" + +#: templates/js/translated/stock.js:1957 +msgid "Scan to location" +msgstr "" + +#: templates/js/translated/stock.js:1968 +msgid "Stock Actions" +msgstr "" + +#: templates/js/translated/stock.js:2012 +msgid "Load installed items" +msgstr "" + +#: templates/js/translated/stock.js:2090 +msgid "Stock item is in production" +msgstr "" + +#: templates/js/translated/stock.js:2095 +msgid "Stock item assigned to sales order" +msgstr "" + +#: templates/js/translated/stock.js:2098 +msgid "Stock item assigned to customer" +msgstr "" + +#: templates/js/translated/stock.js:2101 +msgid "Serialized stock item has been allocated" +msgstr "" + +#: templates/js/translated/stock.js:2103 +msgid "Stock item has been fully allocated" +msgstr "" + +#: templates/js/translated/stock.js:2105 +msgid "Stock item has been partially allocated" +msgstr "" + +#: templates/js/translated/stock.js:2108 +msgid "Stock item has been installed in another item" +msgstr "" + +#: templates/js/translated/stock.js:2110 +msgid "Stock item has been consumed by a build order" +msgstr "" + +#: templates/js/translated/stock.js:2114 +msgid "Stock item has expired" +msgstr "" + +#: templates/js/translated/stock.js:2116 +msgid "Stock item will expire soon" +msgstr "" + +#: templates/js/translated/stock.js:2121 +msgid "Stock item has been rejected" +msgstr "" + +#: templates/js/translated/stock.js:2123 +msgid "Stock item is lost" +msgstr "" + +#: templates/js/translated/stock.js:2125 +msgid "Stock item is destroyed" +msgstr "" + +#: templates/js/translated/stock.js:2129 +#: templates/js/translated/table_filters.js:350 +msgid "Depleted" +msgstr "" + +#: templates/js/translated/stock.js:2294 +msgid "Supplier part not specified" +msgstr "" + +#: templates/js/translated/stock.js:2341 +msgid "Stock Value" +msgstr "" + +#: templates/js/translated/stock.js:2469 +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:194 +#: templates/js/translated/table_filters.js:779 +msgid "Has Pricing" +msgstr "" + +#: templates/js/translated/table_filters.js:234 +#: templates/js/translated/table_filters.js:345 +msgid "Include sublocations" +msgstr "" + +#: templates/js/translated/table_filters.js:235 +msgid "Include locations" +msgstr "" + +#: templates/js/translated/table_filters.js:267 +msgid "Has location type" +msgstr "" + +#: templates/js/translated/table_filters.js:278 +#: templates/js/translated/table_filters.js:279 +#: templates/js/translated/table_filters.js: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:829 +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:825 +msgid "Has Choices" +msgstr "" + +#: templates/js/translated/tables.js:92 +msgid "Display calendar view" +msgstr "" + +#: templates/js/translated/tables.js:102 +msgid "Display list view" +msgstr "" + +#: templates/js/translated/tables.js:112 +msgid "Display tree view" +msgstr "" + +#: templates/js/translated/tables.js:130 +msgid "Expand all rows" +msgstr "" + +#: templates/js/translated/tables.js:136 +msgid "Collapse all rows" +msgstr "" + +#: templates/js/translated/tables.js:186 +msgid "Export Table Data" +msgstr "" + +#: templates/js/translated/tables.js:190 +msgid "Select File Format" +msgstr "" + +#: templates/js/translated/tables.js:529 +msgid "Loading data" +msgstr "" + +#: templates/js/translated/tables.js:532 +msgid "rows per page" +msgstr "" + +#: templates/js/translated/tables.js:537 +msgid "Showing all rows" +msgstr "" + +#: templates/js/translated/tables.js:539 +msgid "Showing" +msgstr "" + +#: templates/js/translated/tables.js:539 +msgid "to" +msgstr "" + +#: templates/js/translated/tables.js:539 +msgid "of" +msgstr "" + +#: templates/js/translated/tables.js:539 +msgid "rows" +msgstr "" + +#: templates/js/translated/tables.js:546 +msgid "No matching results" +msgstr "" + +#: templates/js/translated/tables.js:549 +msgid "Hide/Show pagination" +msgstr "" + +#: templates/js/translated/tables.js:555 +msgid "Toggle" +msgstr "" + +#: templates/js/translated/tables.js:558 +msgid "Columns" +msgstr "" + +#: templates/js/translated/tables.js:561 +msgid "All" +msgstr "" + +#: templates/navbar.html:45 +msgid "Buy" +msgstr "" + +#: templates/navbar.html:57 +msgid "Sell" +msgstr "" + +#: templates/navbar.html:121 +msgid "Show Notifications" +msgstr "" + +#: templates/navbar.html:124 +msgid "New Notifications" +msgstr "" + +#: templates/navbar.html:144 users/models.py:188 +msgid "Admin" +msgstr "" + +#: templates/navbar.html:148 +msgid "Logout" +msgstr "" + +#: templates/notes_buttons.html:6 templates/notes_buttons.html:7 +msgid "Save" +msgstr "" + +#: templates/notifications.html:9 +msgid "Show all notifications and history" +msgstr "" + +#: templates/qr_code.html:11 +msgid "QR data not provided" +msgstr "" + +#: templates/registration/logged_out.html:7 +msgid "You were logged out successfully." +msgstr "" + +#: templates/registration/logged_out.html:9 +msgid "Log in again" +msgstr "" + +#: templates/search.html:9 +msgid "Show full search results" +msgstr "" + +#: templates/search.html:12 +msgid "Clear search" +msgstr "" + +#: templates/search.html:15 +msgid "Close search menu" +msgstr "" + +#: templates/socialaccount/authentication_error.html:5 +msgid "Social Network Login Failure" +msgstr "" + +#: templates/socialaccount/authentication_error.html:8 +msgid "Account Login Failure" +msgstr "" + +#: templates/socialaccount/authentication_error.html:11 +msgid "An error occurred while attempting to login via your social network account." +msgstr "" + +#: templates/socialaccount/authentication_error.html:13 +msgid "Contact your system administrator for further information." +msgstr "" + +#: templates/socialaccount/login.html:13 +#, python-format +msgid "Connect %(provider)s" +msgstr "" + +#: templates/socialaccount/login.html:15 +#, python-format +msgid "You are about to connect a new third party account from %(provider)s." +msgstr "" + +#: templates/socialaccount/login.html:17 +#, python-format +msgid "Sign In Via %(provider)s" +msgstr "" + +#: templates/socialaccount/login.html:19 +#, python-format +msgid "You are about to sign in using a third party account from %(provider)s." +msgstr "" + +#: templates/socialaccount/login.html:24 +msgid "Continue" +msgstr "" + +#: templates/socialaccount/login.html:29 +msgid "Invalid SSO Provider" +msgstr "" + +#: templates/socialaccount/login.html:31 +msgid "The selected SSO provider is invalid, or has not been correctly configured" +msgstr "" + +#: templates/socialaccount/signup.html:11 +#, python-format +msgid "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:127 +msgid "Token has been revoked" +msgstr "" + +#: users/authentication.py:32 +msgid "Token has expired" +msgstr "" + +#: users/models.py:70 +msgid "API Token" +msgstr "" + +#: users/models.py:71 +msgid "API Tokens" +msgstr "" + +#: users/models.py:107 +msgid "Token Name" +msgstr "" + +#: users/models.py:108 +msgid "Custom token name" +msgstr "" + +#: users/models.py:114 +msgid "Token expiry date" +msgstr "" + +#: users/models.py:122 +msgid "Last Seen" +msgstr "" + +#: users/models.py:123 +msgid "Last time the token was used" +msgstr "" + +#: users/models.py:127 +msgid "Revoked" +msgstr "" + +#: users/models.py:384 +msgid "Permission set" +msgstr "" + +#: users/models.py:393 +msgid "Group" +msgstr "" + +#: users/models.py:397 +msgid "View" +msgstr "" + +#: users/models.py:397 +msgid "Permission to view items" +msgstr "" + +#: users/models.py:401 +msgid "Permission to add items" +msgstr "" + +#: users/models.py:405 +msgid "Change" +msgstr "" + +#: users/models.py:407 +msgid "Permissions to edit items" +msgstr "" + +#: users/models.py:413 +msgid "Permission to delete items" +msgstr "" + diff --git a/InvenTree/locale/nl/LC_MESSAGES/django.po b/InvenTree/locale/nl/LC_MESSAGES/django.po index 815cece6e3..7b9dcfb004 100644 --- a/InvenTree/locale/nl/LC_MESSAGES/django.po +++ b/InvenTree/locale/nl/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 04:05+0000\n" -"PO-Revision-Date: 2024-02-28 07:23\n" +"POT-Creation-Date: 2024-03-19 01:26+0000\n" +"PO-Revision-Date: 2024-03-19 11:51\n" "Last-Translator: \n" "Language-Team: Dutch\n" "Language: nl_NL\n" @@ -30,20 +30,20 @@ msgstr "Gebruiker heeft geen rechten om dit model te bekijken" msgid "Invalid unit provided ({unit})" msgstr "" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "Geen waarde opgegeven" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "{original} kon niet worden omgezet naar {unit}" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" msgstr "Ongeldige hoeveelheid ingegeven" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" msgstr "Ongeldige hoeveelheid ingegeven ({exc})" @@ -64,18 +64,18 @@ msgstr "Voer datum in" #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 #: templates/js/translated/return_order.js:776 #: templates/js/translated/sales_order.js:1067 #: templates/js/translated/sales_order.js:1982 -#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 msgid "Notes" msgstr "Opmerkingen" @@ -132,42 +132,42 @@ msgstr "Het ingevoerde e-maildomein is niet goedgekeurd." msgid "Registration is disabled." msgstr "Registratie is uitgeschakeld." -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "Ongeldige hoeveelheid ingevoerd" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "Leeg serienummer" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "Duplicaat serienummer" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "Geen serienummers gevonden" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "Verwijder HTML tags van deze waarde" @@ -203,131 +203,135 @@ msgstr "Externe server heeft lege reactie teruggegeven" msgid "Supplied URL is not a valid image file" msgstr "Opgegeven URL is geen geldig afbeeldingsbestand" -#: InvenTree/locales.py:16 +#: InvenTree/locales.py:18 msgid "Bulgarian" msgstr "Bulgaars" -#: InvenTree/locales.py:17 +#: InvenTree/locales.py:19 msgid "Czech" msgstr "Tsjechisch" -#: InvenTree/locales.py:18 +#: InvenTree/locales.py:20 msgid "Danish" msgstr "Deens" -#: InvenTree/locales.py:19 +#: InvenTree/locales.py:21 msgid "German" msgstr "Duits" -#: InvenTree/locales.py:20 +#: InvenTree/locales.py:22 msgid "Greek" msgstr "Grieks" -#: InvenTree/locales.py:21 +#: InvenTree/locales.py:23 msgid "English" msgstr "Engels" -#: InvenTree/locales.py:22 +#: InvenTree/locales.py:24 msgid "Spanish" msgstr "Spaans" -#: InvenTree/locales.py:23 +#: InvenTree/locales.py:25 msgid "Spanish (Mexican)" msgstr "Spaans (Mexicaans)" -#: InvenTree/locales.py:24 +#: InvenTree/locales.py:26 msgid "Farsi / Persian" msgstr "Farsi / Perzisch" -#: InvenTree/locales.py:25 +#: InvenTree/locales.py:27 msgid "Finnish" msgstr "Fins" -#: InvenTree/locales.py:26 +#: InvenTree/locales.py:28 msgid "French" msgstr "Frans" -#: InvenTree/locales.py:27 +#: InvenTree/locales.py:29 msgid "Hebrew" msgstr "Hebreeuws" -#: InvenTree/locales.py:28 +#: InvenTree/locales.py:30 msgid "Hindi" msgstr "Hindi" -#: InvenTree/locales.py:29 +#: InvenTree/locales.py:31 msgid "Hungarian" msgstr "Hongaars" -#: InvenTree/locales.py:30 +#: InvenTree/locales.py:32 msgid "Italian" msgstr "Italiaans" -#: InvenTree/locales.py:31 +#: InvenTree/locales.py:33 msgid "Japanese" msgstr "Japans" -#: InvenTree/locales.py:32 +#: InvenTree/locales.py:34 msgid "Korean" msgstr "Koreaans" -#: InvenTree/locales.py:33 +#: InvenTree/locales.py:35 +msgid "Latvian" +msgstr "" + +#: InvenTree/locales.py:36 msgid "Dutch" msgstr "Nederlands" -#: InvenTree/locales.py:34 +#: InvenTree/locales.py:37 msgid "Norwegian" msgstr "Noors" -#: InvenTree/locales.py:35 +#: InvenTree/locales.py:38 msgid "Polish" msgstr "Pools" -#: InvenTree/locales.py:36 +#: InvenTree/locales.py:39 msgid "Portuguese" msgstr "Portugees" -#: InvenTree/locales.py:37 +#: InvenTree/locales.py:40 msgid "Portuguese (Brazilian)" msgstr "Portugees (Braziliaans)" -#: InvenTree/locales.py:38 +#: InvenTree/locales.py:41 msgid "Russian" msgstr "Russisch" -#: InvenTree/locales.py:39 +#: InvenTree/locales.py:42 msgid "Slovak" msgstr "" -#: InvenTree/locales.py:40 +#: InvenTree/locales.py:43 msgid "Slovenian" msgstr "Sloveens" -#: InvenTree/locales.py:41 +#: InvenTree/locales.py:44 msgid "Serbian" msgstr "Servisch" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:45 msgid "Swedish" msgstr "Zweeds" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:46 msgid "Thai" msgstr "Thais" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:47 msgid "Turkish" msgstr "Turks" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:48 msgid "Vietnamese" msgstr "Vietnamees" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:49 msgid "Chinese (Simplified)" msgstr "Chinees (vereenvoudigd)" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:50 msgid "Chinese (Traditional)" msgstr "Chinees (traditioneel)" @@ -391,7 +395,7 @@ msgstr "Ontbrekend bestand" msgid "Missing external link" msgstr "Externe link ontbreekt" -#: InvenTree/models.py:559 stock/models.py:2446 +#: InvenTree/models.py:559 stock/models.py:2449 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -401,7 +405,7 @@ msgstr "Bijlage" msgid "Select file to attach" msgstr "Bestand als bijlage selecteren" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -432,13 +436,13 @@ msgstr "Opmerking" msgid "File comment" msgstr "Bestand opmerking" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:3000 users/models.py:100 +#: templates/js/translated/stock.js:3036 users/models.py:100 msgid "User" msgstr "Gebruiker" @@ -479,10 +483,10 @@ msgstr "Dubbele namen kunnen niet bestaan onder hetzelfde bovenliggende object" msgid "Invalid choice" msgstr "Ongeldige keuze" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -495,7 +499,7 @@ msgstr "Ongeldige keuze" #: templates/js/translated/company.js:1155 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Naam" @@ -506,10 +510,10 @@ msgstr "Naam" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -523,7 +527,7 @@ msgstr "Naam" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -531,8 +535,8 @@ msgstr "Naam" #: templates/js/translated/return_order.js:314 #: templates/js/translated/sales_order.js:802 #: templates/js/translated/sales_order.js:1812 -#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021 -#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "Omschrijving" @@ -545,7 +549,7 @@ msgid "parent" msgstr "bovenliggende" #: InvenTree/models.py:916 templates/js/translated/part.js:2794 -#: templates/js/translated/stock.js:2721 +#: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Pad" @@ -581,7 +585,7 @@ msgstr "Serverfout" 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:4134 +#: InvenTree/serializers.py:62 part/models.py:4143 msgid "Must be a valid number" msgstr "Moet een geldig nummer zijn" @@ -596,89 +600,89 @@ msgstr "Valuta" msgid "Select currency from available options" msgstr "Selecteer valuta uit beschikbare opties" -#: InvenTree/serializers.py:436 +#: InvenTree/serializers.py:441 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:448 +#: InvenTree/serializers.py:453 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:467 +#: InvenTree/serializers.py:472 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:469 +#: InvenTree/serializers.py:474 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:476 +#: InvenTree/serializers.py:481 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:537 +#: InvenTree/serializers.py:542 msgid "Filename" msgstr "Bestandsnaam" -#: InvenTree/serializers.py:571 +#: InvenTree/serializers.py:576 msgid "Invalid value" msgstr "Ongeldige waarde" -#: InvenTree/serializers.py:591 +#: InvenTree/serializers.py:596 msgid "Data File" msgstr "Data bestand" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:597 msgid "Select data file for upload" msgstr "Selecteer een bestand om te uploaden" -#: InvenTree/serializers.py:609 +#: InvenTree/serializers.py:614 msgid "Unsupported file type" msgstr "Niet ondersteund bestandstype" -#: InvenTree/serializers.py:615 +#: InvenTree/serializers.py:620 msgid "File is too large" msgstr "Bestand is te groot" -#: InvenTree/serializers.py:636 +#: InvenTree/serializers.py:641 msgid "No columns found in file" msgstr "Geen kolommen gevonden in het bestand" -#: InvenTree/serializers.py:639 +#: InvenTree/serializers.py:644 msgid "No data rows found in file" msgstr "Geen data rijen gevonden in dit bestand" -#: InvenTree/serializers.py:752 +#: InvenTree/serializers.py:757 msgid "No data rows provided" msgstr "Geen data rijen opgegeven" -#: InvenTree/serializers.py:755 +#: InvenTree/serializers.py:760 msgid "No data columns supplied" msgstr "Geen gegevenskolommen opgegeven" -#: InvenTree/serializers.py:822 +#: InvenTree/serializers.py:827 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Verplichte kolom ontbreekt: '{name}'" -#: InvenTree/serializers.py:831 +#: InvenTree/serializers.py:836 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Dubbele kolom: '{col}'" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:859 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:855 +#: InvenTree/serializers.py:860 msgid "URL of remote image file" msgstr "URL van extern afbeeldingsbestand" -#: InvenTree/serializers.py:873 +#: InvenTree/serializers.py:878 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:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "Achtergrondwerker check is gefaald" @@ -818,7 +822,7 @@ msgstr "Splits van bovenliggend item" msgid "Split child item" msgstr "Splits onderliggende item" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 msgid "Merged stock items" msgstr "Samengevoegde voorraadartikelen" @@ -838,7 +842,7 @@ msgstr "Product voltooid" msgid "Build order output rejected" msgstr "Build order uitvoer afgewezen" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 msgid "Consumed by build order" msgstr "Verbruikt door productieorder" @@ -938,14 +942,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:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "Verbruiksartikelen" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -960,7 +964,7 @@ msgid "Tracked" msgstr "Gevolgd" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -985,7 +989,7 @@ msgstr "Beschikbaar" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "Productieorder" @@ -1014,7 +1018,7 @@ msgstr "Productieorderreferentie" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1044,11 +1048,11 @@ msgstr "Productieorder waar deze productie aan is toegewezen" #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1059,7 +1063,7 @@ msgstr "Productieorder waar deze productie aan is toegewezen" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:267 stock/serializers.py:689 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1086,9 +1090,9 @@ msgstr "Productieorder waar deze productie aan is toegewezen" #: templates/js/translated/sales_order.js:1598 #: templates/js/translated/sales_order.js:1796 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960 -#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054 -#: templates/js/translated/stock.js:3200 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 msgid "Part" msgstr "Onderdeel" @@ -1146,8 +1150,8 @@ msgstr "Productiestatus" msgid "Build status code" msgstr "Productiestatuscode" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Batchcode" @@ -1242,53 +1246,53 @@ msgstr "Project Code" msgid "Project code for this build order" msgstr "Project code voor deze build order" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Productieorder {build} is voltooid" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "Een productieorder is voltooid" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "Geen productie uitvoer opgegeven" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "Productie uitvoer is al voltooid" -#: build/models.py:789 +#: build/models.py:805 msgid "Build output does not match Build Order" msgstr "Productuitvoer komt niet overeen met de Productieorder" -#: build/models.py:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 msgid "Quantity must be greater than zero" msgstr "Hoeveelheid moet groter zijn dan nul" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 msgid "Quantity cannot be greater than the output quantity" msgstr "Hoeveelheid kan niet groter zijn dan aantal" -#: build/models.py:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" msgstr "Bouw object" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1298,7 +1302,7 @@ msgstr "Bouw object" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:463 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1310,7 +1314,7 @@ msgstr "Bouw object" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1325,43 +1329,43 @@ msgstr "Bouw object" #: templates/js/translated/sales_order.js:1698 #: templates/js/translated/sales_order.js:1824 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 -#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985 -#: templates/js/translated/stock.js:3068 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "Hoeveelheid" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" msgstr "Vereiste hoeveelheid voor bouwopdracht" -#: build/models.py:1381 +#: build/models.py:1397 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:1390 +#: build/models.py:1406 #, 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:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "Voorraad item is te veel toegewezen" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "Toewijzing hoeveelheid moet groter zijn dan nul" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "Hoeveelheid moet 1 zijn voor geserialiseerde voorraad" -#: build/models.py:1473 +#: build/models.py:1489 msgid "Selected stock item does not match BOM line" msgstr "Geselecteerde voorraadartikelen komen niet overeen met de BOM-regel" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 @@ -1372,23 +1376,23 @@ msgstr "Geselecteerde voorraadartikelen komen niet overeen met de BOM-regel" #: templates/js/translated/sales_order.js:1605 #: templates/js/translated/sales_order.js:1692 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 -#: templates/js/translated/stock.js:2941 +#: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "Voorraadartikel" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "Bron voorraadartikel" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "Voorraad hoeveelheid toe te wijzen aan productie" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "Installeren in" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "Bestemming voorraadartikel" @@ -1425,8 +1429,8 @@ msgstr "Hoeveelheid als geheel getal vereist voor traceerbare onderdelen" 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:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Serienummers" @@ -1451,10 +1455,10 @@ msgstr "De volgende serienummers bestaan al of zijn ongeldig" msgid "A list of build outputs must be provided" msgstr "Een lijst van productieuitvoeren moet worden verstrekt" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1466,8 +1470,8 @@ msgstr "Een lijst van productieuitvoeren moet worden verstrekt" #: templates/js/translated/sales_order.js:1627 #: templates/js/translated/sales_order.js:1706 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164 -#: templates/js/translated/stock.js:2835 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 msgid "Location" msgstr "Locatie" @@ -1493,16 +1497,16 @@ msgstr "Locatie van voltooide productieuitvoeren" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 #: templates/js/translated/purchase_order.js:1723 #: templates/js/translated/return_order.js:331 #: templates/js/translated/sales_order.js:819 -#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959 -#: templates/js/translated/stock.js:3084 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 msgid "Status" msgstr "Status" @@ -1566,7 +1570,7 @@ msgstr "Accepteer dat voorraadartikelen niet volledig zijn toegewezen aan deze p msgid "Required stock has not been fully allocated" msgstr "Vereiste voorraad is niet volledig toegewezen" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "Accepteer Onvolledig" @@ -1602,11 +1606,11 @@ msgstr "Bouw lijn-item" 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:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1065 msgid "Item must be in stock" msgstr "Artikel moet op voorraad zijn" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Beschikbare hoeveelheid ({q}) overschreden" @@ -1619,7 +1623,7 @@ msgstr "Productieuitvoer moet worden opgegeven voor de toewijzing van gevolgde o 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:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "Allocaties voor artikelen moeten worden opgegeven" @@ -1659,44 +1663,45 @@ msgstr "Optionele Items" msgid "Allocate optional BOM items to build order" msgstr "Alloceer optionele BOM items om bestelling te bouwen" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 #: stock/api.py:745 msgid "BOM Item" msgstr "Stuklijstartikel" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "In bestelling" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "Beschikbare Voorraad" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "Voorraad vereist voor productieorder" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "Achterstallige Productieorder" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "Productieorder {bo} is nu achterstallig" @@ -1862,7 +1867,7 @@ msgstr "Voltooide Uitvoeren" #: templates/js/translated/pricing.js:929 #: templates/js/translated/sales_order.js:769 #: templates/js/translated/sales_order.js:992 -#: templates/js/translated/stock.js:2888 +#: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "Verkooporder" @@ -1920,8 +1925,8 @@ msgstr "Toegewezen Onderdelen" #: templates/js/translated/build.js:1377 #: templates/js/translated/model_renderers.js:235 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153 -#: templates/js/translated/stock.js:3091 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" @@ -1990,27 +1995,31 @@ msgstr "Vereiste onderdelen bestellen" msgid "Order Parts" msgstr "Onderdelen bestellen" -#: build/templates/build/detail.html:210 +#: 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 "Onvolledige Productieuitvoeren" -#: build/templates/build/detail.html:214 +#: build/templates/build/detail.html:219 msgid "Create new build output" msgstr "Nieuwe productieuitvoer aanmaken" -#: build/templates/build/detail.html:215 +#: build/templates/build/detail.html:220 msgid "New Build Output" msgstr "Nieuwe Productieuitvoer" -#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "Verbruikte voorraad" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "Voltooide Productieuitvoeren" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2026,15 +2035,15 @@ msgstr "Voltooide Productieuitvoeren" msgid "Attachments" msgstr "Bijlagen" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "Productie notities" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" msgstr "" @@ -2112,1390 +2121,1414 @@ msgstr "Projectbeschrijving" msgid "User or group responsible for this project" msgstr "" -#: common/models.py:737 +#: common/models.py:744 msgid "Settings key (must be unique - case insensitive)" msgstr "Instellingssleutel (moet uniek zijn - hoofdletter ongevoelig)" -#: common/models.py:741 +#: common/models.py:748 msgid "Settings value" msgstr "Instellingswaarde" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "Gekozen waarde is geen geldige optie" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "Waarde moet een booleaanse waarde zijn" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "Waarde moet een geheel getal zijn" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "Sleutelreeks moet uniek zijn" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "Geen groep" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "Een leeg domein is niet toegestaan." -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "Ongeldige domeinnaam: {domain}" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "Geen plug-in gevonden" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "Opnieuw opstarten vereist" -#: common/models.py:1231 +#: common/models.py:1238 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:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "Migraties in behandeling" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "ID Serverinstantie" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "Stringbeschrijving voor de server instantie" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "Gebruik de instantie naam" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "Gebruik de naam van de instantie in de titelbalk" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "Tonen `over` beperken" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "Toon de `over` modal alleen aan superusers" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "Bedrijfsnaam" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "Interne bedrijfsnaam" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "Basis-URL" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "Basis URL voor serverinstantie" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "Standaard Valuta" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "Selecteer basisvaluta voor de berekening van prijzen" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1283 +#: common/models.py:1290 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "dagen" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "Download van URL" -#: common/models.py:1298 +#: common/models.py:1305 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:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "Download limiet" -#: common/models.py:1305 +#: common/models.py:1312 msgid "Maximum allowable download size for remote image" msgstr "Maximale downloadgrootte voor externe afbeelding" -#: common/models.py:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "User-agent gebruikt om te downloaden van URL" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "Bevestiging vereist" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "Vereis expliciete bevestiging van de gebruiker voor bepaalde actie." -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "Boomstructuur Diepte" -#: common/models.py:1332 +#: common/models.py:1339 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:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "Interval voor update" -#: common/models.py:1339 +#: common/models.py:1346 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:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "Automatische backup" -#: common/models.py:1346 +#: common/models.py:1353 msgid "Enable automatic backup of database and media files" msgstr "Automatische back-up van database- en mediabestanden inschakelen" -#: common/models.py:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "Automatische backup interval" -#: common/models.py:1352 +#: common/models.py:1359 msgid "Specify number of days between automated backup events" msgstr "Geef het aantal dagen op tussen geautomatiseerde backup" -#: common/models.py:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "Interval Taak Verwijderen" -#: common/models.py:1360 +#: common/models.py:1367 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:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "Error Log Verwijderings Interval" -#: common/models.py:1369 +#: common/models.py:1376 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:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "Interval Verwijderen Notificatie" -#: common/models.py:1378 +#: common/models.py:1385 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:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Streepjescodeondersteuning" -#: common/models.py:1386 +#: common/models.py:1393 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "Barcode Invoer Vertraging" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "Barcode invoerverwerking vertraging" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "Barcode Webcam Ondersteuning" -#: common/models.py:1399 +#: common/models.py:1406 msgid "Allow barcode scanning via webcam in browser" msgstr "Barcode via webcam scannen in browser toestaan" -#: common/models.py:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "Herzieningen onderdeel" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" msgstr "Revisieveld voor onderdeel inschakelen" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "IPN Regex" -#: common/models.py:1411 +#: common/models.py:1418 msgid "Regular expression pattern for matching Part IPN" msgstr "Regulier expressiepatroon voor het overeenkomende Onderdeel IPN" -#: common/models.py:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "Duplicaat IPN toestaan" -#: common/models.py:1415 +#: common/models.py:1422 msgid "Allow multiple parts to share the same IPN" msgstr "Toestaan dat meerdere onderdelen dezelfde IPN gebruiken" -#: common/models.py:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "Bewerken IPN toestaan" -#: common/models.py:1421 +#: common/models.py:1428 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:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "Kopieer Onderdeel Stuklijstgegevens" -#: common/models.py:1427 +#: common/models.py:1434 msgid "Copy BOM data by default when duplicating a part" msgstr "Kopieer standaard stuklijstgegevens bij het dupliceren van een onderdeel" -#: common/models.py:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "Kopieer Onderdeel Parametergegevens" -#: common/models.py:1433 +#: common/models.py:1440 msgid "Copy parameter data by default when duplicating a part" msgstr "Parametergegevens standaard kopiëren bij het dupliceren van een onderdeel" -#: common/models.py:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "Kopieer Onderdeel Testdata" -#: common/models.py:1439 +#: common/models.py:1446 msgid "Copy test data by default when duplicating a part" msgstr "Testdata standaard kopiëren bij het dupliceren van een onderdeel" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "Kopiëer Categorieparameter Sjablonen" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Copy category parameter templates when creating a part" msgstr "Kopieer categorieparameter sjablonen bij het aanmaken van een onderdeel" -#: common/models.py:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "Sjabloon" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "Onderdelen zijn standaard sjablonen" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 msgid "Parts can be assembled from other components by default" msgstr "Onderdelen kunnen standaard vanuit andere componenten worden samengesteld" -#: common/models.py:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "Component" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Parts can be used as sub-components by default" msgstr "Onderdelen kunnen standaard worden gebruikt als subcomponenten" -#: common/models.py:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "Koopbaar" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "Onderdelen kunnen standaard gekocht worden" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "Verkoopbaar" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "Onderdelen kunnen standaard verkocht worden" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "Onderdelen kunnen standaard gevolgd worden" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "Onderdelen zijn standaard virtueel" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "Toon Import in Weergaven" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Display the import wizard in some part views" msgstr "Toon de importwizard in sommige onderdelenweergaven" -#: common/models.py:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "Verwante onderdelen tonen" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" msgstr "Verwante onderdelen voor een onderdeel tonen" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "Initiële voorraadgegevens" -#: common/models.py:1505 +#: common/models.py:1512 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:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Initiële leveranciergegevens" -#: common/models.py:1512 +#: common/models.py:1519 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:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "Onderdelennaam Weergaveopmaak" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "Opmaak om de onderdeelnaam weer te geven" -#: common/models.py:1525 +#: common/models.py:1532 msgid "Part Category Default Icon" msgstr "Standaardicoon voor onderdeel catagorie" -#: common/models.py:1526 +#: common/models.py:1533 msgid "Part category default icon (empty means no icon)" msgstr "Standaardicoon voor onderdeel catagorie (leeg betekent geen pictogram)" -#: common/models.py:1530 +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "Forceer Parameter Eenheden" -#: common/models.py:1532 +#: common/models.py:1539 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:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "Minimaal aantal prijs decimalen" -#: common/models.py:1540 +#: common/models.py:1547 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:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "Maximum prijs decimalen" -#: common/models.py:1548 +#: common/models.py:1555 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:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "Gebruik leveranciersprijzen" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "Prijsvoordelen leveranciers opnemen in de totale prijsberekening" -#: common/models.py:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "Aankoopgeschiedenis overschrijven" -#: common/models.py:1564 +#: 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:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "Gebruik voorraaditem prijzen" -#: common/models.py:1572 +#: 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:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "Voorraad artikelprijs leeftijd" -#: common/models.py:1580 +#: 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:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "Gebruik variantprijzen" -#: common/models.py:1588 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "Variantenprijzen opnemen in de totale prijsberekening" -#: common/models.py:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "Alleen actieve varianten" -#: common/models.py:1595 +#: 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:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "Prijzen Herbouw interval" -#: common/models.py:1603 +#: 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:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "Interne Prijzen" -#: common/models.py:1611 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "Inschakelen van interne prijzen voor onderdelen" -#: common/models.py:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "Interne prijs overschrijven" -#: common/models.py:1618 +#: 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:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "Printen van labels Inschakelen" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "Printen van labels via de webinterface inschakelen" -#: common/models.py:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "Label Afbeelding DPI" -#: common/models.py:1632 +#: 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:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "Activeer Rapportages" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "Activeer het genereren van rapporten" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "Foutopsporingsmodus" -#: common/models.py:1645 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "Rapporten genereren in debug modus (HTML uitvoer)" -#: common/models.py:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: 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:202 msgid "Page Size" msgstr "Paginagrootte" -#: common/models.py:1651 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "Standaard paginagrootte voor PDF rapporten" -#: common/models.py:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "Activeer Testrapporten" -#: common/models.py:1657 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "Activeer het genereren van testrapporten" -#: common/models.py:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "Testrapporten Toevoegen" -#: common/models.py:1664 +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "Globaal unieke serienummers" -#: common/models.py:1671 +#: 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:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "Serienummers automatisch invullen" -#: common/models.py:1677 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "Automatisch invullen van serienummer in formulieren" -#: common/models.py:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "Verwijder uitgeputte voorraad" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "Bepaalt standaard gedrag wanneer een voorraaditem is uitgeput" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "Batchcode Sjabloon" -#: common/models.py:1692 +#: 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:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "Verlopen Voorraad" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "Verlopen voorraad functionaliteit inschakelen" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "Verkoop Verlopen Voorraad" -#: common/models.py:1704 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "Verkoop verlopen voorraad toestaan" -#: common/models.py:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "Voorraad Vervaltijd" -#: common/models.py:1711 +#: 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:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "Produceer Verlopen Voorraad" -#: common/models.py:1719 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "Sta productie met verlopen voorraad toe" -#: common/models.py:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "Voorraad Eigenaar Toezicht" -#: common/models.py:1725 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "Eigenaarstoezicht over voorraadlocaties en items inschakelen" -#: common/models.py:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "Voorraadlocatie standaard icoon" -#: common/models.py:1731 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "Standaard locatie pictogram (leeg betekent geen icoon)" -#: common/models.py:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "Geïnstalleerde voorraad items weergeven" -#: common/models.py:1736 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "Geïnstalleerde voorraadartikelen in voorraadtabellen tonen" -#: common/models.py:1741 +#: 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 "Build Order Reference Pattern" msgstr "Productieorderreferentiepatroon" -#: common/models.py:1743 +#: common/models.py:1764 msgid "Required pattern for generating Build Order reference field" msgstr "Vereist patroon voor het genereren van het Bouworderreferentieveld" -#: common/models.py:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "Retourorders inschakelen" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "Retourorder functionaliteit inschakelen in de gebruikersinterface" -#: common/models.py:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "Retourorder referentie patroon" -#: common/models.py:1757 +#: common/models.py:1778 msgid "Required pattern for generating Return Order reference field" -msgstr "Verplicht patroon voor het genereren van Retour Order referentie veld" +msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "Bewerk voltooide retourorders" -#: common/models.py:1765 +#: common/models.py:1786 msgid "Allow editing of return orders after they have been completed" msgstr "Bewerken van retourorders toestaan nadat deze zijn voltooid" -#: common/models.py:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "Verkooporderreferentiepatroon" -#: common/models.py:1773 +#: common/models.py:1794 msgid "Required pattern for generating Sales Order reference field" msgstr "Vereist patroon voor het genereren van het Verkooporderreferentieveld" -#: common/models.py:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "Standaard Verzending Verkooporder" -#: common/models.py:1780 +#: common/models.py:1801 msgid "Enable creation of default shipment with sales orders" msgstr "Aanmaken standaard verzending bij verkooporders inschakelen" -#: common/models.py:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "Bewerk voltooide verkooporders" -#: common/models.py:1787 +#: common/models.py:1808 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:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "Inkooporderreferentiepatroon" -#: common/models.py:1795 +#: common/models.py:1816 msgid "Required pattern for generating Purchase Order reference field" msgstr "Vereist patroon voor het genereren van het Inkooporderreferentieveld" -#: common/models.py:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "Bewerk voltooide verkooporders" -#: common/models.py:1803 +#: common/models.py:1824 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:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1811 +#: common/models.py:1832 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "Wachtwoord vergeten functie inschakelen" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" msgstr "Wachtwoord vergeten functie inschakelen op de inlogpagina's" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "Registratie inschakelen" -#: common/models.py:1825 +#: common/models.py:1846 msgid "Enable self-registration for users on the login pages" msgstr "Zelfregistratie voor gebruikers op de inlogpagina's inschakelen" -#: common/models.py:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "SSO inschakelen" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "SSO inschakelen op de inlogpagina's" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "Schakel gebruikersregistratie met SSO in" -#: common/models.py:1838 +#: common/models.py:1859 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:1844 +#: common/models.py:1865 msgid "Email required" msgstr "E-mailadres verplicht" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "Vereis gebruiker om e-mailadres te registreren bij aanmelding" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "SSO-gebruikers automatisch invullen" -#: common/models.py:1852 +#: common/models.py:1873 msgid "Automatically fill out user-details from SSO account-data" msgstr "Gebruikersdetails van SSO-accountgegevens automatisch invullen" -#: common/models.py:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "E-mail twee keer" -#: common/models.py:1859 +#: common/models.py:1880 msgid "On signup ask users twice for their mail" msgstr "Bij inschrijving gebruikers twee keer om hun e-mail vragen" -#: common/models.py:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "Wachtwoord tweemaal" -#: common/models.py:1865 +#: common/models.py:1886 msgid "On signup ask users twice for their password" msgstr "Laat gebruikers twee keer om hun wachtwoord vragen tijdens het aanmelden" -#: common/models.py:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "Toegestane domeinen" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "Inschrijven beperken tot bepaalde domeinen (komma-gescheiden, beginnend met @)" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "Groep bij aanmelding" -#: common/models.py:1879 +#: common/models.py:1900 msgid "Group to which new users are assigned on registration" msgstr "Groep waaraan nieuwe gebruikers worden toegewezen bij registratie" -#: common/models.py:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "MFA afdwingen" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "Gebruikers moeten multifactor-beveiliging gebruiken." -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "Controleer plugins bij het opstarten" -#: common/models.py:1892 +#: common/models.py:1913 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:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "Activeer URL-integratie" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "Plugins toestaan om URL-routes toe te voegen" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "Activeer navigatie integratie" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "Plugins toestaan om te integreren in navigatie" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "Activeer app integratie" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "Activeer plug-ins om apps toe te voegen" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "Activeer planning integratie" -#: common/models.py:1929 +#: common/models.py:1950 msgid "Enable plugins to run scheduled tasks" msgstr "Activeer plugin om periodiek taken uit te voeren" -#: common/models.py:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "Activeer evenement integratie" -#: common/models.py:1936 +#: common/models.py:1957 msgid "Enable plugins to respond to internal events" msgstr "Activeer plugin om op interne evenementen te reageren" -#: common/models.py:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "Activeer project codes" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "Activeer project codes voor het bijhouden van projecten" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "Voorraadcontrole functionaliteit" -#: common/models.py:1950 +#: common/models.py:1971 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:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "Externe locaties uitsluiten" -#: common/models.py:1958 +#: common/models.py:1979 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "Voorraadartikelen op externe locaties uitsluiten van voorraadberekeningen" -#: common/models.py:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "Automatische Voorraadcontrole Periode" -#: common/models.py:1966 +#: common/models.py:1987 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:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "Rapport Verwijdering Interval" -#: common/models.py:1974 +#: common/models.py:1995 msgid "Stocktake reports will be deleted after specified number of days" msgstr "Voorraadrapportage zal worden verwijderd na het opgegeven aantal dagen" -#: common/models.py:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2029 common/models.py:2429 msgid "Settings key (must be unique - case insensitive" msgstr "Instellingssleutel (moet uniek zijn - hoofdletter ongevoelig" -#: common/models.py:2043 +#: common/models.py:2070 msgid "Hide inactive parts" msgstr "Inactieve Onderdelen Verbergen" -#: common/models.py:2045 +#: common/models.py:2072 msgid "Hide inactive parts in results displayed on the homepage" msgstr "Verberg inactieve delen bij items op de homepage" -#: common/models.py:2051 +#: common/models.py:2078 msgid "Show subscribed parts" msgstr "Toon geabonneerde onderdelen" -#: common/models.py:2052 +#: common/models.py:2079 msgid "Show subscribed parts on the homepage" msgstr "Toon geabonneerde onderdelen op de homepage" -#: common/models.py:2057 +#: common/models.py:2084 msgid "Show subscribed categories" msgstr "Toon geabonneerde categorieën" -#: common/models.py:2058 +#: common/models.py:2085 msgid "Show subscribed part categories on the homepage" msgstr "Toon geabonneerde onderdeel categorieën op de startpagina" -#: common/models.py:2063 +#: common/models.py:2090 msgid "Show latest parts" msgstr "Toon laatste onderdelen" -#: common/models.py:2064 +#: common/models.py:2091 msgid "Show latest parts on the homepage" msgstr "Toon laatste onderdelen op de startpagina" -#: common/models.py:2069 +#: common/models.py:2096 msgid "Show unvalidated BOMs" msgstr "Toon niet-gevalideerde BOM's" -#: common/models.py:2070 +#: common/models.py:2097 msgid "Show BOMs that await validation on the homepage" msgstr "Laat BOMs zien die wachten op validatie op de startpagina" -#: common/models.py:2075 +#: common/models.py:2102 msgid "Show recent stock changes" msgstr "Toon recente voorraadwijzigingen" -#: common/models.py:2076 +#: common/models.py:2103 msgid "Show recently changed stock items on the homepage" msgstr "Toon recent aangepaste voorraadartikelen op de startpagina" -#: common/models.py:2081 +#: common/models.py:2108 msgid "Show low stock" msgstr "Toon lage voorraad" -#: common/models.py:2082 +#: common/models.py:2109 msgid "Show low stock items on the homepage" msgstr "Toon lage voorraad van artikelen op de startpagina" -#: common/models.py:2087 +#: common/models.py:2114 msgid "Show depleted stock" msgstr "Toon lege voorraad" -#: common/models.py:2088 +#: common/models.py:2115 msgid "Show depleted stock items on the homepage" msgstr "Toon lege voorraad van artikelen op de startpagina" -#: common/models.py:2093 +#: common/models.py:2120 msgid "Show needed stock" msgstr "Toon benodigde voorraad" -#: common/models.py:2094 +#: common/models.py:2121 msgid "Show stock items needed for builds on the homepage" msgstr "Toon benodigde voorraad van artikelen voor productie op de startpagina" -#: common/models.py:2099 +#: common/models.py:2126 msgid "Show expired stock" msgstr "Toon verlopen voorraad" -#: common/models.py:2100 +#: common/models.py:2127 msgid "Show expired stock items on the homepage" msgstr "Toon verlopen voorraad van artikelen op de startpagina" -#: common/models.py:2105 +#: common/models.py:2132 msgid "Show stale stock" msgstr "Toon verouderde voorraad" -#: common/models.py:2106 +#: common/models.py:2133 msgid "Show stale stock items on the homepage" msgstr "Toon verouderde voorraad van artikelen op de startpagina" -#: common/models.py:2111 +#: common/models.py:2138 msgid "Show pending builds" msgstr "Toon openstaande producties" -#: common/models.py:2112 +#: common/models.py:2139 msgid "Show pending builds on the homepage" msgstr "Toon openstaande producties op de startpagina" -#: common/models.py:2117 +#: common/models.py:2144 msgid "Show overdue builds" msgstr "Toon achterstallige productie" -#: common/models.py:2118 +#: common/models.py:2145 msgid "Show overdue builds on the homepage" msgstr "Toon achterstallige producties op de startpagina" -#: common/models.py:2123 +#: common/models.py:2150 msgid "Show outstanding POs" msgstr "Toon uitstaande PO's" -#: common/models.py:2124 +#: common/models.py:2151 msgid "Show outstanding POs on the homepage" msgstr "Toon uitstaande PO's op de startpagina" -#: common/models.py:2129 +#: common/models.py:2156 msgid "Show overdue POs" msgstr "Toon achterstallige PO's" -#: common/models.py:2130 +#: common/models.py:2157 msgid "Show overdue POs on the homepage" msgstr "Toon achterstallige PO's op de startpagina" -#: common/models.py:2135 +#: common/models.py:2162 msgid "Show outstanding SOs" msgstr "Toon uitstaande SO's" -#: common/models.py:2136 +#: common/models.py:2163 msgid "Show outstanding SOs on the homepage" msgstr "Toon uitstaande SO's op de startpagina" -#: common/models.py:2141 +#: common/models.py:2168 msgid "Show overdue SOs" msgstr "Toon achterstallige SO's" -#: common/models.py:2142 +#: common/models.py:2169 msgid "Show overdue SOs on the homepage" msgstr "Toon achterstallige SO's op de startpagina" -#: common/models.py:2147 +#: common/models.py:2174 msgid "Show pending SO shipments" msgstr "Toon in behandeling SO verzendingen" -#: common/models.py:2148 +#: common/models.py:2175 msgid "Show pending SO shipments on the homepage" msgstr "Toon in behandeling zijnde SO verzendingen op de startpagina" -#: common/models.py:2153 +#: common/models.py:2180 msgid "Show News" msgstr "Nieuws tonen" -#: common/models.py:2154 +#: common/models.py:2181 msgid "Show news on the homepage" msgstr "Nieuws op de startpagina weergeven" -#: common/models.py:2159 +#: common/models.py:2186 msgid "Inline label display" msgstr "Inline labelweergave" -#: common/models.py:2161 +#: common/models.py:2188 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:2167 +#: common/models.py:2194 msgid "Default label printer" msgstr "Standaard label printer" -#: common/models.py:2169 +#: common/models.py:2196 msgid "Configure which label printer should be selected by default" msgstr "Instellen welke label printer standaard moet worden geselecteerd" -#: common/models.py:2175 +#: common/models.py:2202 msgid "Inline report display" msgstr "Inline rapport weergeven" -#: common/models.py:2177 +#: common/models.py:2204 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:2183 +#: common/models.py:2210 msgid "Search Parts" msgstr "Zoek Onderdelen" -#: common/models.py:2184 +#: common/models.py:2211 msgid "Display parts in search preview window" msgstr "Onderdelen weergeven in zoekscherm" -#: common/models.py:2189 +#: common/models.py:2216 msgid "Search Supplier Parts" msgstr "Zoek leveranciersonderdelen" -#: common/models.py:2190 +#: common/models.py:2217 msgid "Display supplier parts in search preview window" msgstr "Leveranciersonderdelen weergeven in zoekscherm" -#: common/models.py:2195 +#: common/models.py:2222 msgid "Search Manufacturer Parts" msgstr "Fabrikant onderdelen zoeken" -#: common/models.py:2196 +#: common/models.py:2223 msgid "Display manufacturer parts in search preview window" msgstr "Fabrikant onderdelen weergeven in zoekscherm" -#: common/models.py:2201 +#: common/models.py:2228 msgid "Hide Inactive Parts" msgstr "Inactieve Onderdelen Verbergen" -#: common/models.py:2202 +#: common/models.py:2229 msgid "Excluded inactive parts from search preview window" msgstr "Inactieve verkooporders weglaten in het zoekvenster" -#: common/models.py:2207 +#: common/models.py:2234 msgid "Search Categories" msgstr "Zoek categorieën" -#: common/models.py:2208 +#: common/models.py:2235 msgid "Display part categories in search preview window" msgstr "Toon onderdeelcategorieën in zoekvenster" -#: common/models.py:2213 +#: common/models.py:2240 msgid "Search Stock" msgstr "Zoek in Voorraad" -#: common/models.py:2214 +#: common/models.py:2241 msgid "Display stock items in search preview window" msgstr "Toon voorraad items in zoekvenster" -#: common/models.py:2219 +#: common/models.py:2246 msgid "Hide Unavailable Stock Items" msgstr "Verberg niet beschikbare voorraad items" -#: common/models.py:2221 +#: common/models.py:2248 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:2227 +#: common/models.py:2254 msgid "Search Locations" msgstr "Locaties doorzoeken" -#: common/models.py:2228 +#: common/models.py:2255 msgid "Display stock locations in search preview window" msgstr "Toon voorraadlocaties in zoekvenster" -#: common/models.py:2233 +#: common/models.py:2260 msgid "Search Companies" msgstr "Zoek bedrijven" -#: common/models.py:2234 +#: common/models.py:2261 msgid "Display companies in search preview window" msgstr "Toon bedrijven in zoekvenster" -#: common/models.py:2239 +#: common/models.py:2266 msgid "Search Build Orders" msgstr "Zoek Bouworders" -#: common/models.py:2240 +#: common/models.py:2267 msgid "Display build orders in search preview window" msgstr "Toon bouworders in zoekvenster" -#: common/models.py:2245 +#: common/models.py:2272 msgid "Search Purchase Orders" msgstr "Inkooporders Zoeken" -#: common/models.py:2246 +#: common/models.py:2273 msgid "Display purchase orders in search preview window" msgstr "Toon inkooporders in het zoekvenster" -#: common/models.py:2251 +#: common/models.py:2278 msgid "Exclude Inactive Purchase Orders" msgstr "Inactieve Inkooporders Weglaten" -#: common/models.py:2253 +#: common/models.py:2280 msgid "Exclude inactive purchase orders from search preview window" msgstr "Inactieve inkooporders weglaten in het zoekvenster" -#: common/models.py:2259 +#: common/models.py:2286 msgid "Search Sales Orders" msgstr "Verkooporders zoeken" -#: common/models.py:2260 +#: common/models.py:2287 msgid "Display sales orders in search preview window" msgstr "Toon verkooporders in het zoekvenster" -#: common/models.py:2265 +#: common/models.py:2292 msgid "Exclude Inactive Sales Orders" msgstr "Inactieve Verkooporders Weglaten" -#: common/models.py:2267 +#: common/models.py:2294 msgid "Exclude inactive sales orders from search preview window" msgstr "Inactieve verkooporders weglaten in het zoekvenster" -#: common/models.py:2273 +#: common/models.py:2300 msgid "Search Return Orders" msgstr "Zoek retourorders" -#: common/models.py:2274 +#: common/models.py:2301 msgid "Display return orders in search preview window" msgstr "Toon bouworders in zoekvenster" -#: common/models.py:2279 +#: common/models.py:2306 msgid "Exclude Inactive Return Orders" msgstr "Inactieve retourbestellingen weglaten" -#: common/models.py:2281 +#: common/models.py:2308 msgid "Exclude inactive return orders from search preview window" msgstr "Inactieve retourorders uitsluiten in zoekvenster" -#: common/models.py:2287 +#: common/models.py:2314 msgid "Search Preview Results" msgstr "Zoekvoorbeeld resultaten" -#: common/models.py:2289 +#: common/models.py:2316 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:2295 +#: common/models.py:2322 msgid "Regex Search" msgstr "Regex zoeken" -#: common/models.py:2296 +#: common/models.py:2323 msgid "Enable regular expressions in search queries" msgstr "Schakel reguliere expressies in zoekopdrachten in" -#: common/models.py:2301 +#: common/models.py:2328 msgid "Whole Word Search" msgstr "Hele woorden zoeken" -#: common/models.py:2302 +#: common/models.py:2329 msgid "Search queries return results for whole word matches" msgstr "Zoekopdrachten geven resultaat voor hele woord overeenkomsten" -#: common/models.py:2307 +#: common/models.py:2334 msgid "Show Quantity in Forms" msgstr "Toon hoeveelheid in formulieren" -#: common/models.py:2308 +#: common/models.py:2335 msgid "Display available part quantity in some forms" msgstr "Hoeveelheid beschikbare onderdelen in sommige formulieren weergeven" -#: common/models.py:2313 +#: common/models.py:2340 msgid "Escape Key Closes Forms" msgstr "Escape-toets sluit formulieren" -#: common/models.py:2314 +#: common/models.py:2341 msgid "Use the escape key to close modal forms" msgstr "Gebruik de Escape-toets om standaard formulieren te sluiten" -#: common/models.py:2319 +#: common/models.py:2346 msgid "Fixed Navbar" msgstr "Vaste navigatiebalk" -#: common/models.py:2320 +#: common/models.py:2347 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:2325 +#: common/models.py:2352 msgid "Date Format" msgstr "Datum formaat" -#: common/models.py:2326 +#: common/models.py:2353 msgid "Preferred format for displaying dates" msgstr "Voorkeursindeling voor weergave van datums" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2366 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Onderdeel planning" -#: common/models.py:2340 +#: common/models.py:2367 msgid "Display part scheduling information" msgstr "Toon informatie voor het plannen van onderdelen" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2372 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Voorraadcontrole onderdeel" -#: common/models.py:2347 +#: common/models.py:2374 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "Toon voorraadinformatie van onderdeel (als voorraadcontrole functionaliteit is ingeschakeld)" -#: common/models.py:2353 +#: common/models.py:2380 msgid "Table String Length" msgstr "Tabel tekenreekslengte" -#: common/models.py:2355 +#: common/models.py:2382 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2361 +#: common/models.py:2388 msgid "Default part label template" msgstr "Standaard sjabloon product onderdeel" -#: common/models.py:2362 +#: common/models.py:2389 msgid "The part label template to be automatically selected" msgstr "Het onderdeellabelsjabloon dat automatisch wordt geselecteerd" -#: common/models.py:2367 +#: common/models.py:2394 msgid "Default stock item template" msgstr "Standaard sjabloon voorraad onderdeel" -#: common/models.py:2369 +#: common/models.py:2396 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2375 +#: common/models.py:2402 msgid "Default stock location label template" msgstr "Standaard label van voorraadlocatie" -#: common/models.py:2377 +#: common/models.py:2404 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2383 +#: common/models.py:2410 msgid "Receive error reports" msgstr "Foutrapportages ontvangen" -#: common/models.py:2384 +#: common/models.py:2411 msgid "Receive notifications for system errors" msgstr "Meldingen ontvangen van systeemfouten" -#: common/models.py:2389 +#: common/models.py:2416 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2417 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2460 msgid "Price break quantity" msgstr "" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3503,23 +3536,23 @@ msgstr "" msgid "Price" msgstr "Prijs" -#: common/models.py:2441 +#: common/models.py:2468 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2639 common/models.py:2824 msgid "Endpoint" msgstr "Eindpunt" -#: common/models.py:2613 +#: common/models.py:2640 msgid "Endpoint at which this webhook is received" msgstr "Eindpunt waarop deze webhook wordt ontvangen" -#: common/models.py:2623 +#: common/models.py:2650 msgid "Name for this webhook" msgstr "Naam van deze webhook" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3529,101 +3562,101 @@ msgstr "Naam van deze webhook" msgid "Active" msgstr "Actief" -#: common/models.py:2627 +#: common/models.py:2654 msgid "Is this webhook active" msgstr "Is deze webhook actief" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2670 users/models.py:148 msgid "Token" msgstr "Token" -#: common/models.py:2644 +#: common/models.py:2671 msgid "Token for access" msgstr "Token voor toegang" -#: common/models.py:2652 +#: common/models.py:2679 msgid "Secret" msgstr "Geheim" -#: common/models.py:2653 +#: common/models.py:2680 msgid "Shared secret for HMAC" msgstr "Gedeeld geheim voor HMAC" -#: common/models.py:2761 +#: common/models.py:2788 msgid "Message ID" msgstr "Bericht ID" -#: common/models.py:2762 +#: common/models.py:2789 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2770 +#: common/models.py:2797 msgid "Host" msgstr "Host" -#: common/models.py:2771 +#: common/models.py:2798 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2779 +#: common/models.py:2806 msgid "Header" msgstr "Koptekst" -#: common/models.py:2780 +#: common/models.py:2807 msgid "Header of this message" msgstr "Koptekst van dit bericht" -#: common/models.py:2787 +#: common/models.py:2814 msgid "Body" msgstr "Berichtinhoud" -#: common/models.py:2788 +#: common/models.py:2815 msgid "Body of this message" msgstr "Inhoud van dit bericht" -#: common/models.py:2798 +#: common/models.py:2825 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2803 +#: common/models.py:2830 msgid "Worked on" msgstr "Aan gewerkt" -#: common/models.py:2804 +#: common/models.py:2831 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2930 +#: common/models.py:2957 msgid "Id" msgstr "Id" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2959 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "Titel" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2963 templates/js/translated/news.js:60 msgid "Published" msgstr "Gepubliceerd" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2965 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2967 templates/js/translated/news.js:52 msgid "Summary" msgstr "Samenvatting" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Read" msgstr "Gelezen" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Was this news item read?" msgstr "" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2987 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3633,31 +3666,31 @@ msgstr "" msgid "Image" msgstr "Afbeelding" -#: common/models.py:2960 +#: common/models.py:2987 msgid "Image file" msgstr "Afbeelding" -#: common/models.py:3002 +#: common/models.py:3029 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3021 +#: common/models.py:3048 msgid "Unit name" msgstr "" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "Symbool" -#: common/models.py:3029 +#: common/models.py:3056 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "Definitie" -#: common/models.py:3037 +#: common/models.py:3064 msgid "Unit definition" msgstr "" @@ -3961,7 +3994,7 @@ msgid "Link to address information (external)" msgstr "" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Basis onderdeel" @@ -3972,7 +4005,7 @@ msgstr "Onderdeel selecteren" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3987,7 +4020,7 @@ msgid "Select manufacturer" msgstr "Fabrikant selecteren" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4022,9 +4055,9 @@ msgstr "Parameternaam" #: company/models.py:615 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2438 templates/js/translated/company.js:1156 +#: stock/models.py:2441 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1519 msgid "Value" msgstr "Waarde" @@ -4033,7 +4066,7 @@ msgid "Parameter value" msgstr "Parameterwaarde" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4059,7 +4092,7 @@ msgstr "Gekoppeld fabrikant onderdeel moet verwijzen naar hetzelfde basis onderd #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4076,7 +4109,7 @@ msgstr "Leverancier" msgid "Select supplier" msgstr "Leverancier selecteren" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "" @@ -4093,13 +4126,13 @@ msgid "Supplier part description" msgstr "" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:579 msgid "Note" msgstr "Opmerking" @@ -4112,10 +4145,10 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "Minimale kosten (bijv. voorraadkosten)" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 -#: templates/js/translated/stock.js:2387 +#: templates/js/translated/stock.js:2423 msgid "Packaging" msgstr "" @@ -4157,7 +4190,7 @@ msgstr "" msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "" @@ -4218,13 +4251,13 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1100 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 #: templates/js/translated/return_order.js:296 #: templates/js/translated/sales_order.js:784 -#: templates/js/translated/stock.js:2923 +#: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:804 msgid "Customer" msgstr "Klant" @@ -4429,8 +4462,9 @@ 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/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "Leveranciers" @@ -4482,7 +4516,7 @@ msgstr "" #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2243 +#: templates/js/translated/stock.js:2279 msgid "Supplier Part" msgstr "Leveranciersonderdeel" @@ -4528,7 +4562,7 @@ 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:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4577,15 +4611,17 @@ msgstr "" msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 -#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:193 msgid "Stock Items" msgstr "Voorraadartikelen" @@ -4639,8 +4675,8 @@ msgstr "Label" msgid "Label template file" msgstr "Label template bestand" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "Ingeschakeld" @@ -4665,7 +4701,7 @@ msgstr "Hoogte [mm]" msgid "Label height, specified in mm" msgstr "Label hoogte, gespecificeerd in mm" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "Bestandsnaam Patroon" @@ -4679,8 +4715,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "Filters" @@ -4821,7 +4857,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1674 -#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "Inkooporder" @@ -4830,7 +4866,7 @@ msgstr "Inkooporder" #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 -#: templates/js/translated/stock.js:2905 +#: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "" @@ -4838,11 +4874,11 @@ msgstr "" msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -5029,9 +5065,9 @@ msgstr "Ontvangen" msgid "Number of items received" msgstr "Aantal ontvangen artikelen" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2274 +#: templates/js/translated/stock.js:2310 msgid "Purchase Price" msgstr "Inkoopprijs" @@ -5084,8 +5120,8 @@ msgstr "Gecontroleerd door" msgid "User who checked this shipment" msgstr "Gebruiker die deze zending gecontroleerd heeft" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "Zending" @@ -5133,7 +5169,7 @@ msgstr "Kan voorraad niet toewijzen aan een regel zonder onderdeel" msgid "Allocation quantity cannot exceed stock quantity" msgstr "Toewijzingshoeveelheid kan niet hoger zijn dan de voorraadhoeveelheid" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "Hoeveelheid moet 1 zijn voor geserialiseerd voorraadartikel" @@ -5207,159 +5243,159 @@ msgstr "" msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "Order kan niet worden geannuleerd" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "Order is niet open" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "Valuta Inkoopprijs" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "Leveranciersonderdeel moet worden gespecificeerd" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "Inkooporder moet worden gespecificeerd" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "De leverancier moet overeenkomen met de inkooporder" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "Inkooporder moet overeenkomen met de leverancier" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "Artikel" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "Artikelregel komt niet overeen met inkooporder" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "Selecteer bestemmingslocatie voor ontvangen artikelen" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 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:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "Streepjescode is al in gebruik" -#: order/serializers.py:610 +#: order/serializers.py:632 msgid "An integer quantity must be provided for trackable parts" msgstr "Hoeveelheid als geheel getal vereist voor traceerbare onderdelen" -#: order/serializers.py:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "Artikelen moeten worden opgegeven" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "Bestemmingslocatie moet worden opgegeven" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "Geleverde streepjescodewaarden moeten uniek zijn" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "Valuta verkoopprijs" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "Geen verzenddetails opgegeven" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "Artikelregel is niet gekoppeld aan deze bestelling" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "Hoeveelheid moet positief zijn" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "Voer serienummers in om toe te wijzen" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "Verzending is al verzonden" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "Zending is niet gekoppeld aan deze bestelling" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "Geen overeenkomst gevonden voor de volgende serienummers" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "De volgende serienummers zijn al toegewezen" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1677 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "" @@ -5733,7 +5769,7 @@ msgid "Pending Shipments" msgstr "Verzendingen in behandeling" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "Acties" @@ -5763,12 +5799,12 @@ 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:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "Onderdeel-id" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "Onderdeel naam" @@ -5780,12 +5816,12 @@ msgstr "Onderdeel omschrijving" #: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 -#: templates/js/translated/stock.js:1999 +#: templates/js/translated/stock.js:2035 msgid "IPN" msgstr "" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" @@ -5861,10 +5897,10 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -5885,17 +5921,17 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3897 msgid "Part IPN" msgstr "" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5973,8 +6009,8 @@ msgstr "" msgid "This option must be selected" msgstr "" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5982,12 +6018,17 @@ msgstr "" msgid "Category" msgstr "" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Standaard locatie" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "Totale Voorraad" @@ -5995,7 +6036,7 @@ msgstr "Totale Voorraad" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Onderdeel Categorie" @@ -6010,7 +6051,8 @@ msgstr "Onderdeel Categorieën" msgid "Default location for parts in this category" msgstr "Standaard locatie voor onderdelen in deze categorie" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 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" @@ -6076,7 +6118,7 @@ msgstr "" msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3896 msgid "Part name" msgstr "Onderdeel naam" @@ -6358,7 +6400,7 @@ msgstr "" #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1732 -#: templates/js/translated/stock.js:2785 +#: templates/js/translated/stock.js:2821 msgid "Date" msgstr "Datum" @@ -6410,586 +6452,602 @@ msgstr "" msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3448 -msgid "Test with this name already exists for this part" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "" -#: part/models.py:3496 +#: part/models.py:3505 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "" -#: part/models.py:3503 +#: part/models.py:3512 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "De template van de parameter moet uniek zijn" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "Parameternaam" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "Parameter Template" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "Parameterwaarde" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3847 +#: part/models.py:3856 msgid "Default Parameter Value" msgstr "Standaard Parameter Waarde" -#: part/models.py:3885 +#: part/models.py:3894 msgid "Part ID or part name" msgstr "" -#: part/models.py:3886 +#: part/models.py:3895 msgid "Unique part ID value" msgstr "" -#: part/models.py:3888 +#: part/models.py:3897 msgid "Part IPN value" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "Level" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "BOM level" msgstr "" -#: part/models.py:3979 +#: part/models.py:3988 msgid "Select parent part" msgstr "" -#: part/models.py:3989 +#: part/models.py:3998 msgid "Sub part" msgstr "" -#: part/models.py:3990 +#: part/models.py:3999 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4001 +#: part/models.py:4010 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4007 +#: part/models.py:4016 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4013 +#: part/models.py:4022 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4029 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4021 +#: part/models.py:4030 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4028 +#: part/models.py:4037 msgid "BOM item reference" msgstr "" -#: part/models.py:4036 +#: part/models.py:4045 msgid "BOM item notes" msgstr "" -#: part/models.py:4042 +#: part/models.py:4051 msgid "Checksum" msgstr "" -#: part/models.py:4043 +#: part/models.py:4052 msgid "BOM line checksum" msgstr "" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4057 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4049 +#: part/models.py:4058 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4063 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:4055 +#: part/models.py:4064 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4069 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4061 +#: part/models.py:4070 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4146 stock/models.py:649 +#: part/models.py:4155 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4165 part/models.py:4167 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4298 +#: part/models.py:4307 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4319 +#: part/models.py:4328 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4332 +#: part/models.py:4341 msgid "Parent BOM item" msgstr "" -#: part/models.py:4340 +#: part/models.py:4349 msgid "Substitute part" msgstr "" -#: part/models.py:4356 +#: part/models.py:4365 msgid "Part 1" msgstr "" -#: part/models.py:4364 +#: part/models.py:4373 msgid "Part 2" msgstr "" -#: part/models.py:4365 +#: part/models.py:4374 msgid "Select Related Part" msgstr "" -#: part/models.py:4384 +#: part/models.py:4393 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4389 +#: part/models.py:4398 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "Geen onderdelen geselecteerd" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "Afbeelding kopiëren" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "Afbeelding kopiëren van het oorspronkelijke onderdeel" -#: part/serializers.py:432 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "Parameters kopiëren" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "Parameter data kopiëren van het originele onderdeel" -#: part/serializers.py:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:480 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1104 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1078 +#: part/serializers.py:1114 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1088 +#: part/serializers.py:1124 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1647 +#: part/serializers.py:1693 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1659 +#: part/serializers.py:1705 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1694 +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "Ongeldige hoeveelheid" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "" @@ -7147,7 +7205,7 @@ msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/stock.js:2179 users/models.py:191 +#: templates/js/translated/stock.js:2215 users/models.py:191 msgid "Stocktake" msgstr "" @@ -7221,7 +7279,7 @@ msgid "Validate BOM" msgstr "" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "" @@ -7405,7 +7463,7 @@ msgstr "Toegewezen aan Productieorder" msgid "Allocated to Sales Orders" msgstr "Toegewezen aan verkooporders" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "" @@ -7509,7 +7567,7 @@ msgstr "" #: templates/InvenTree/settings/sidebar.html:51 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 -#: templates/js/translated/stock.js:2033 templates/navbar.html:31 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 msgid "Stock" msgstr "Voorraad" @@ -7555,7 +7613,7 @@ msgstr "" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 -#: templates/js/translated/stock.js:2209 +#: templates/js/translated/stock.js:2245 msgid "Last Updated" msgstr "" @@ -7999,7 +8057,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "" @@ -8307,16 +8365,16 @@ msgstr "" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "" @@ -8336,103 +8394,111 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "Filters inkooporder" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "Verkooporder zoekopdracht filters" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" msgstr "" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" msgstr "" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8499,12 +8565,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1492 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Result" msgstr "" @@ -8531,7 +8597,7 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:168 #: stock/admin.py:162 templates/js/translated/stock.js:700 -#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110 msgid "Serial" msgstr "" @@ -8615,7 +8681,7 @@ msgstr "" #: stock/admin.py:256 stock/models.py:886 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2193 users/models.py:113 +#: templates/js/translated/stock.js:2229 users/models.py:113 msgid "Expiry Date" msgstr "" @@ -8713,7 +8779,7 @@ msgstr "" msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:174 templates/js/translated/stock.js:2745 +#: stock/models.py:174 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" @@ -8722,7 +8788,7 @@ msgstr "" msgid "This is an external stock location" msgstr "" -#: stock/models.py:181 templates/js/translated/stock.js:2754 +#: stock/models.py:181 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" @@ -8739,7 +8805,7 @@ msgstr "" msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:290 msgid "Stock item cannot be created for virtual parts" msgstr "" @@ -8784,7 +8850,7 @@ msgstr "" msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1351 msgid "Packaging this stock item is stored in" msgstr "" @@ -8796,7 +8862,7 @@ msgstr "" msgid "Serial number for this item" msgstr "" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1334 msgid "Batch code for this stock item" msgstr "" @@ -8873,7 +8939,7 @@ msgstr "" msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:529 msgid "Serial numbers already exist" msgstr "" @@ -8905,7 +8971,7 @@ msgstr "" msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1240 msgid "Duplicate stock items" msgstr "" @@ -8929,207 +8995,236 @@ msgstr "" msgid "Entry notes" msgstr "" -#: stock/models.py:2399 +#: stock/models.py:2402 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2405 +#: stock/models.py:2408 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Test result" msgstr "" -#: stock/models.py:2439 +#: stock/models.py:2442 msgid "Test output value" msgstr "" -#: stock/models.py:2447 +#: stock/models.py:2450 msgid "Test result attachment" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2454 msgid "Test notes" msgstr "" -#: stock/serializers.py:96 +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "" + +#: stock/models.py:2463 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2469 +msgid "Started" +msgstr "" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:100 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:119 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 +#: stock/serializers.py:151 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:184 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:267 +#: stock/serializers.py:282 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:380 +#: stock/serializers.py:402 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:442 +#: stock/serializers.py:464 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:455 +#: stock/serializers.py:477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:462 +#: stock/serializers.py:484 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:480 +#: stock/serializers.py:502 msgid "Optional note field" msgstr "" -#: stock/serializers.py:490 +#: stock/serializers.py:512 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:545 +#: stock/serializers.py:567 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:574 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:553 +#: stock/serializers.py:575 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:566 +#: stock/serializers.py:588 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:596 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:581 +#: stock/serializers.py:607 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:620 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:628 +#: stock/serializers.py:655 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:663 +#: stock/serializers.py:690 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:676 +#: stock/serializers.py:703 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:693 +#: stock/serializers.py:720 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:724 +#: stock/serializers.py:751 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:761 +#: stock/serializers.py:788 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:767 +#: stock/serializers.py:794 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Sublocaties" -#: stock/serializers.py:1036 +#: stock/serializers.py:1069 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1040 +#: stock/serializers.py:1073 msgid "Item is allocated to a sales order" msgstr "Artikel is toegewezen aan een verkooporder" -#: stock/serializers.py:1044 +#: stock/serializers.py:1077 msgid "Item is allocated to a build order" msgstr "Artikel is toegewezen aan een productieorder" -#: stock/serializers.py:1068 +#: stock/serializers.py:1101 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1074 +#: stock/serializers.py:1107 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1082 +#: stock/serializers.py:1115 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1125 stock/serializers.py:1379 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1171 +#: stock/serializers.py:1204 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1176 +#: stock/serializers.py:1209 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1177 +#: stock/serializers.py:1210 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1182 +#: stock/serializers.py:1215 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1183 +#: stock/serializers.py:1216 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1193 +#: stock/serializers.py:1226 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1260 +#: stock/serializers.py:1293 msgid "No Change" msgstr "" -#: stock/serializers.py:1289 +#: stock/serializers.py:1322 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1308 +#: stock/serializers.py:1341 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1336 +#: stock/serializers.py:1369 msgid "Stock transaction notes" msgstr "" @@ -9154,7 +9249,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 msgid "Delete Test Data" msgstr "" @@ -9170,15 +9265,15 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:274 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 msgid "Add Test Result" msgstr "" @@ -9201,17 +9296,17 @@ msgid "Stock adjustment actions" msgstr "" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 msgid "Count stock" msgstr "Voorraad tellen" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:1803 msgid "Add stock" msgstr "" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1776 +#: templates/js/translated/stock.js:1812 msgid "Remove stock" msgstr "" @@ -9220,12 +9315,12 @@ msgid "Serialize stock" msgstr "" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 msgid "Transfer stock" msgstr "Voorraad overzetten" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1884 msgid "Assign to customer" msgstr "" @@ -9364,7 +9459,7 @@ msgid "No stocktake performed" msgstr "" #: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1915 +#: templates/js/translated/stock.js:1951 msgid "stock item" msgstr "" @@ -9469,7 +9564,7 @@ msgid "New Location" msgstr "Nieuwe Locatie" #: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2536 +#: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" @@ -10063,7 +10158,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:37 msgid "New Location Type" msgstr "" @@ -10120,7 +10215,7 @@ msgstr "Verkooporder Instellingen" msgid "Stock Settings" msgstr "" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:33 msgid "Stock Location Types" msgstr "" @@ -10662,7 +10757,7 @@ msgid "The following parts are low on required stock" msgstr "De volgende onderdelen hebben een lage vereiste voorraad" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "Vereiste Hoeveelheid" @@ -10676,7 +10771,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "" @@ -11051,62 +11146,66 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "" @@ -11389,7 +11488,7 @@ msgstr "" #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 -#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11401,7 +11500,7 @@ msgstr "" msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006 +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" @@ -11449,29 +11548,29 @@ msgstr "" msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "" @@ -11804,15 +11903,15 @@ msgstr "" msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3087 +#: templates/js/translated/forms.js:3103 msgid "Select Columns" msgstr "" @@ -12289,7 +12388,7 @@ msgid "No category" msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 -#: templates/js/translated/stock.js:2633 +#: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" @@ -12301,7 +12400,7 @@ msgstr "" msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" @@ -12313,64 +12412,64 @@ msgstr "" msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" @@ -12907,7 +13006,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1737 +#: templates/js/translated/stock.js:1773 msgid "Shipped to customer" msgstr "" @@ -13165,7 +13264,7 @@ msgstr "" msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" @@ -13189,248 +13288,256 @@ msgstr "" msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1440 +#: templates/js/translated/stock.js:1447 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1443 +#: templates/js/translated/stock.js:1450 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1466 +#: templates/js/translated/stock.js:1473 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1530 +#: templates/js/translated/stock.js:1537 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1677 +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1733 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1729 +#: templates/js/translated/stock.js:1765 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1769 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1741 +#: templates/js/translated/stock.js:1777 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1747 +#: templates/js/translated/stock.js:1783 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1839 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1848 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:1897 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1916 +#: templates/js/translated/stock.js:1952 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1921 +#: templates/js/translated/stock.js:1957 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1932 +#: templates/js/translated/stock.js:1968 msgid "Stock Actions" msgstr "" -#: templates/js/translated/stock.js:1976 +#: templates/js/translated/stock.js:2012 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2054 +#: templates/js/translated/stock.js:2090 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2059 +#: templates/js/translated/stock.js:2095 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2062 +#: templates/js/translated/stock.js:2098 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2065 +#: templates/js/translated/stock.js:2101 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2067 +#: templates/js/translated/stock.js:2103 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2069 +#: templates/js/translated/stock.js:2105 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2072 +#: templates/js/translated/stock.js:2108 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2074 +#: templates/js/translated/stock.js:2110 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2114 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2080 +#: templates/js/translated/stock.js:2116 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2085 +#: templates/js/translated/stock.js:2121 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2087 +#: templates/js/translated/stock.js:2123 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2089 +#: templates/js/translated/stock.js:2125 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2129 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2258 +#: templates/js/translated/stock.js:2294 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2305 +#: templates/js/translated/stock.js:2341 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2433 +#: templates/js/translated/stock.js:2469 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2573 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2692 +#: templates/js/translated/stock.js:2728 msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2810 +#: templates/js/translated/stock.js:2846 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2814 +#: templates/js/translated/stock.js:2850 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:2862 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2848 +#: templates/js/translated/stock.js:2884 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2865 +#: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2880 +#: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2897 +#: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2914 +#: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3005 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2977 +#: templates/js/translated/stock.js:3013 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:3049 +#: templates/js/translated/stock.js:3085 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139 +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:3161 +#: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:3182 +#: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:3183 +#: 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:3185 +#: 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:3186 +#: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:3187 +#: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:3188 +#: 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:3201 +#: templates/js/translated/stock.js:3237 msgid "Select part to install" msgstr "" -#: templates/js/translated/stock.js:3264 +#: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" msgstr "" -#: templates/js/translated/stock.js:3277 +#: templates/js/translated/stock.js:3313 msgid "Selected stock items" msgstr "" -#: templates/js/translated/stock.js:3281 +#: templates/js/translated/stock.js:3317 msgid "Change Stock Status" msgstr "" diff --git a/InvenTree/locale/no/LC_MESSAGES/django.po b/InvenTree/locale/no/LC_MESSAGES/django.po index f455cfd926..bdc6373a13 100644 --- a/InvenTree/locale/no/LC_MESSAGES/django.po +++ b/InvenTree/locale/no/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 04:05+0000\n" -"PO-Revision-Date: 2024-02-28 07:23\n" +"POT-Creation-Date: 2024-03-19 01:26+0000\n" +"PO-Revision-Date: 2024-03-19 11:51\n" "Last-Translator: \n" "Language-Team: Norwegian\n" "Language: no_NO\n" @@ -30,20 +30,20 @@ msgstr "Brukeren har ikke rettigheter til å se denne modellen" msgid "Invalid unit provided ({unit})" msgstr "" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "Ingen verdi angitt" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "Kunne ikke konvertere {original} til {unit}" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" msgstr "Ugyldig mengde oppgitt" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" msgstr "Ugyldig mengde oppgitt ({exc})" @@ -64,18 +64,18 @@ msgstr "Oppgi dato" #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 #: templates/js/translated/return_order.js:776 #: templates/js/translated/sales_order.js:1067 #: templates/js/translated/sales_order.js:1982 -#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 msgid "Notes" msgstr "Notater" @@ -132,42 +132,42 @@ msgstr "Det oppgitte e-postdomenet er ikke godkjent." msgid "Registration is disabled." msgstr "Registrering er deaktivert." -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "Ugyldig mengde oppgitt" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "Tom serienummerstreng" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "Duplisert serienummer" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "Ugyldig gruppesekvens: {group}" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "Gruppesekvens {group} overskrider tillatt antall ({expected_quantity})" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "Ugyldig gruppesekvens: {group}" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "Ingen serienummer funnet" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "Antall unike serienumre ({len(serials)}) må samsvare med antallet ({expected_quantity})" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "Fjern HTML-tagger fra denne verdien" @@ -203,131 +203,135 @@ msgstr "Ekstern server returnerte tomt svar" msgid "Supplied URL is not a valid image file" msgstr "Angitt URL er ikke en gyldig bildefil" -#: InvenTree/locales.py:16 +#: InvenTree/locales.py:18 msgid "Bulgarian" msgstr "Bulgarsk" -#: InvenTree/locales.py:17 +#: InvenTree/locales.py:19 msgid "Czech" msgstr "Tsjekkisk" -#: InvenTree/locales.py:18 +#: InvenTree/locales.py:20 msgid "Danish" msgstr "Dansk" -#: InvenTree/locales.py:19 +#: InvenTree/locales.py:21 msgid "German" msgstr "Tysk" -#: InvenTree/locales.py:20 +#: InvenTree/locales.py:22 msgid "Greek" msgstr "Gresk" -#: InvenTree/locales.py:21 +#: InvenTree/locales.py:23 msgid "English" msgstr "Engelsk" -#: InvenTree/locales.py:22 +#: InvenTree/locales.py:24 msgid "Spanish" msgstr "Spansk" -#: InvenTree/locales.py:23 +#: InvenTree/locales.py:25 msgid "Spanish (Mexican)" msgstr "Spansk (Meksikansk)" -#: InvenTree/locales.py:24 +#: InvenTree/locales.py:26 msgid "Farsi / Persian" msgstr "Farsi / Persisk" -#: InvenTree/locales.py:25 +#: InvenTree/locales.py:27 msgid "Finnish" msgstr "Finsk" -#: InvenTree/locales.py:26 +#: InvenTree/locales.py:28 msgid "French" msgstr "Fransk" -#: InvenTree/locales.py:27 +#: InvenTree/locales.py:29 msgid "Hebrew" msgstr "Hebraisk" -#: InvenTree/locales.py:28 +#: InvenTree/locales.py:30 msgid "Hindi" msgstr "Hindi" -#: InvenTree/locales.py:29 +#: InvenTree/locales.py:31 msgid "Hungarian" msgstr "Ungarsk" -#: InvenTree/locales.py:30 +#: InvenTree/locales.py:32 msgid "Italian" msgstr "Italiensk" -#: InvenTree/locales.py:31 +#: InvenTree/locales.py:33 msgid "Japanese" msgstr "Japansk" -#: InvenTree/locales.py:32 +#: InvenTree/locales.py:34 msgid "Korean" msgstr "Koreansk" -#: InvenTree/locales.py:33 +#: InvenTree/locales.py:35 +msgid "Latvian" +msgstr "" + +#: InvenTree/locales.py:36 msgid "Dutch" msgstr "Nederlandsk" -#: InvenTree/locales.py:34 +#: InvenTree/locales.py:37 msgid "Norwegian" msgstr "Norsk" -#: InvenTree/locales.py:35 +#: InvenTree/locales.py:38 msgid "Polish" msgstr "Polsk" -#: InvenTree/locales.py:36 +#: InvenTree/locales.py:39 msgid "Portuguese" msgstr "Portugisisk" -#: InvenTree/locales.py:37 +#: InvenTree/locales.py:40 msgid "Portuguese (Brazilian)" msgstr "Portugisisk (Brasil)" -#: InvenTree/locales.py:38 +#: InvenTree/locales.py:41 msgid "Russian" msgstr "Russisk" -#: InvenTree/locales.py:39 +#: InvenTree/locales.py:42 msgid "Slovak" msgstr "Slovakisk" -#: InvenTree/locales.py:40 +#: InvenTree/locales.py:43 msgid "Slovenian" msgstr "Slovensk" -#: InvenTree/locales.py:41 +#: InvenTree/locales.py:44 msgid "Serbian" msgstr "Serbisk" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:45 msgid "Swedish" msgstr "Svensk" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:46 msgid "Thai" msgstr "Thailandsk" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:47 msgid "Turkish" msgstr "Tyrkisk" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:48 msgid "Vietnamese" msgstr "Vietnamesisk" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:49 msgid "Chinese (Simplified)" msgstr "Kinesisk (forenklet)" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:50 msgid "Chinese (Traditional)" msgstr "Kinesisk (tradisjonell)" @@ -391,7 +395,7 @@ msgstr "Fil mangler" msgid "Missing external link" msgstr "Mangler eksternlenke" -#: InvenTree/models.py:559 stock/models.py:2446 +#: InvenTree/models.py:559 stock/models.py:2449 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -401,7 +405,7 @@ msgstr "Vedlegg" msgid "Select file to attach" msgstr "Velg fil å legge ved" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -432,13 +436,13 @@ msgstr "Kommentar" msgid "File comment" msgstr "Kommentar til fil" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:3000 users/models.py:100 +#: templates/js/translated/stock.js:3036 users/models.py:100 msgid "User" msgstr "Bruker" @@ -479,10 +483,10 @@ msgstr "Duplikatnavn kan ikke eksistere under samme overordnede" msgid "Invalid choice" msgstr "Ugyldig valg" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -495,7 +499,7 @@ msgstr "Ugyldig valg" #: templates/js/translated/company.js:1155 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Navn" @@ -506,10 +510,10 @@ msgstr "Navn" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -523,7 +527,7 @@ msgstr "Navn" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -531,8 +535,8 @@ msgstr "Navn" #: templates/js/translated/return_order.js:314 #: templates/js/translated/sales_order.js:802 #: templates/js/translated/sales_order.js:1812 -#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021 -#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "Beskrivelse" @@ -545,7 +549,7 @@ msgid "parent" msgstr "overkategori" #: InvenTree/models.py:916 templates/js/translated/part.js:2794 -#: templates/js/translated/stock.js:2721 +#: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Sti" @@ -581,7 +585,7 @@ msgstr "Serverfeil" msgid "An error has been logged by the server." msgstr "En feil har blitt logget av serveren." -#: InvenTree/serializers.py:62 part/models.py:4134 +#: InvenTree/serializers.py:62 part/models.py:4143 msgid "Must be a valid number" msgstr "Må være et gyldig tall" @@ -596,89 +600,89 @@ msgstr "Valuta" msgid "Select currency from available options" msgstr "Velg valuta ut fra tilgjengelige alternativer" -#: InvenTree/serializers.py:436 +#: InvenTree/serializers.py:441 msgid "You do not have permission to change this user role." msgstr "Du har ikke tillatelse til å endre denne brukerrollen." -#: InvenTree/serializers.py:448 +#: InvenTree/serializers.py:453 msgid "Only superusers can create new users" msgstr "Bare superbrukere kan opprette nye brukere" -#: InvenTree/serializers.py:467 +#: InvenTree/serializers.py:472 msgid "Your account has been created." msgstr "Din konto er opprettet." -#: InvenTree/serializers.py:469 +#: InvenTree/serializers.py:474 msgid "Please use the password reset function to login" msgstr "Vennligst bruk funksjonen for å tilbakestille passord for å logge inn" -#: InvenTree/serializers.py:476 +#: InvenTree/serializers.py:481 msgid "Welcome to InvenTree" msgstr "Velkommen til InvenTree" -#: InvenTree/serializers.py:537 +#: InvenTree/serializers.py:542 msgid "Filename" msgstr "Filnavn" -#: InvenTree/serializers.py:571 +#: InvenTree/serializers.py:576 msgid "Invalid value" msgstr "Ugyldig verdi" -#: InvenTree/serializers.py:591 +#: InvenTree/serializers.py:596 msgid "Data File" msgstr "Datafil" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:597 msgid "Select data file for upload" msgstr "Velg datafil for opplasting" -#: InvenTree/serializers.py:609 +#: InvenTree/serializers.py:614 msgid "Unsupported file type" msgstr "Filtypen støttes ikke" -#: InvenTree/serializers.py:615 +#: InvenTree/serializers.py:620 msgid "File is too large" msgstr "Filen er for stor" -#: InvenTree/serializers.py:636 +#: InvenTree/serializers.py:641 msgid "No columns found in file" msgstr "Ingen kolonner funnet i filen" -#: InvenTree/serializers.py:639 +#: InvenTree/serializers.py:644 msgid "No data rows found in file" msgstr "Ingen datarader funnet i fil" -#: InvenTree/serializers.py:752 +#: InvenTree/serializers.py:757 msgid "No data rows provided" msgstr "Ingen datarader oppgitt" -#: InvenTree/serializers.py:755 +#: InvenTree/serializers.py:760 msgid "No data columns supplied" msgstr "Ingen datakolonner angitt" -#: InvenTree/serializers.py:822 +#: InvenTree/serializers.py:827 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Mangler påkrevd kolonne: '{name}'" -#: InvenTree/serializers.py:831 +#: InvenTree/serializers.py:836 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Dupliaktkolonne: '{col}'" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:859 msgid "Remote Image" msgstr "Eksternt bilde" -#: InvenTree/serializers.py:855 +#: InvenTree/serializers.py:860 msgid "URL of remote image file" msgstr "URLtil ekstern bildefil" -#: InvenTree/serializers.py:873 +#: InvenTree/serializers.py:878 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:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "Sjekk av bakgrunnsarbeider mislyktes" @@ -818,7 +822,7 @@ msgstr "Skill ut fra overordnet artikkel" msgid "Split child item" msgstr "Skill ut fra underartikkel" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 msgid "Merged stock items" msgstr "Sammenslåtte lagervarer" @@ -838,7 +842,7 @@ msgstr "Produksjonsartikkel fullført" msgid "Build order output rejected" msgstr "Produksjonsartikkel avvist" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 msgid "Consumed by build order" msgstr "Brukt av produksjonsordre" @@ -938,14 +942,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:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "Forbruksvare" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -960,7 +964,7 @@ msgid "Tracked" msgstr "Spores" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -985,7 +989,7 @@ msgstr "Tilgjengelig" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "Produksjonsordre" @@ -1014,7 +1018,7 @@ msgstr "Produksjonsordre-referanse" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1044,11 +1048,11 @@ msgstr "Produksjonsordre som denne produksjonen er tildelt" #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1059,7 +1063,7 @@ msgstr "Produksjonsordre som denne produksjonen er tildelt" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:267 stock/serializers.py:689 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1086,9 +1090,9 @@ msgstr "Produksjonsordre som denne produksjonen er tildelt" #: templates/js/translated/sales_order.js:1598 #: templates/js/translated/sales_order.js:1796 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960 -#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054 -#: templates/js/translated/stock.js:3200 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 msgid "Part" msgstr "Del" @@ -1146,8 +1150,8 @@ msgstr "Produksjonsstatus" msgid "Build status code" msgstr "Produksjonsstatuskode" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Batchkode" @@ -1242,53 +1246,53 @@ msgstr "Prosjektkode" msgid "Project code for this build order" msgstr "Prosjektkode for denne produksjonsordren" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Produksjonsordre {build} er fullført" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "En produksjonsordre er fullført" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "Ingen produksjonsartikkel spesifisert" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "Produksjonsartikkelen er allerede fullført" -#: build/models.py:789 +#: build/models.py:805 msgid "Build output does not match Build Order" msgstr "Produksjonsartikkelen samsvarer ikke med produksjonsordren" -#: build/models.py:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 msgid "Quantity must be greater than zero" msgstr "Mengden må være større enn null" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 msgid "Quantity cannot be greater than the output quantity" msgstr "Kvantitet kan ikke være større enn utgangsantallet" -#: build/models.py:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" msgstr "Produksjonsobjekt" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1298,7 +1302,7 @@ msgstr "Produksjonsobjekt" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:463 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1310,7 +1314,7 @@ msgstr "Produksjonsobjekt" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1325,43 +1329,43 @@ msgstr "Produksjonsobjekt" #: templates/js/translated/sales_order.js:1698 #: templates/js/translated/sales_order.js:1824 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 -#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985 -#: templates/js/translated/stock.js:3068 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "Antall" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" msgstr "Påkrevd antall for produksjonsordre" -#: build/models.py:1381 +#: build/models.py:1397 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:1390 +#: build/models.py:1406 #, 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:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "Lagervaren er overtildelt" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "Tildelingsantall må være større enn null" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "Mengden må være 1 for serialisert lagervare" -#: build/models.py:1473 +#: build/models.py:1489 msgid "Selected stock item does not match BOM line" msgstr "Valgt lagervare samsvarer ikke med BOM-linjen" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 @@ -1372,23 +1376,23 @@ msgstr "Valgt lagervare samsvarer ikke med BOM-linjen" #: templates/js/translated/sales_order.js:1605 #: templates/js/translated/sales_order.js:1692 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 -#: templates/js/translated/stock.js:2941 +#: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "Lagervare" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "Kildelagervare" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "Lagerantall å tildele til produksjonen" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "Monteres i" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "Lagervare for montering" @@ -1425,8 +1429,8 @@ msgstr "Heltallsverdi kreves for sporbare deler" msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Heltallsverdi kreves, da stykklisten inneholder sporbare deler" -#: build/serializers.py:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Serienummer" @@ -1451,10 +1455,10 @@ msgstr "Følgende serienummer finnes allerede eller er ugyldige" msgid "A list of build outputs must be provided" msgstr "En liste over produksjonsartikler må oppgis" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1466,8 +1470,8 @@ msgstr "En liste over produksjonsartikler må oppgis" #: templates/js/translated/sales_order.js:1627 #: templates/js/translated/sales_order.js:1706 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164 -#: templates/js/translated/stock.js:2835 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 msgid "Location" msgstr "Plassering" @@ -1493,16 +1497,16 @@ msgstr "Plassering for ferdige produksjonsartikler" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 #: templates/js/translated/purchase_order.js:1723 #: templates/js/translated/return_order.js:331 #: templates/js/translated/sales_order.js:819 -#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959 -#: templates/js/translated/stock.js:3084 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 msgid "Status" msgstr "Status" @@ -1566,7 +1570,7 @@ msgstr "Godta at lagervarer ikke er fullt tildelt til denne produksjonsordren" msgid "Required stock has not been fully allocated" msgstr "Nøvendig lagerbeholdning er ikke fullt tildelt" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "Godta uferdig" @@ -1602,11 +1606,11 @@ msgstr "Produksjonsartikkel" 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:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1065 msgid "Item must be in stock" msgstr "Artikkelen må være på lager" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Tilgjengelig antall ({q}) overskredet" @@ -1619,7 +1623,7 @@ msgstr "Produksjonsartikkel må spesifiseres for tildeling av sporede deler" msgid "Build output cannot be specified for allocation of untracked parts" msgstr "Produksjonsartikkel kan ikke spesifiseres for tildeling av usporede deler" -#: build/serializers.py:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "Tildelingsartikler må oppgis" @@ -1659,44 +1663,45 @@ msgstr "Valgfrie artikler" msgid "Allocate optional BOM items to build order" msgstr "Tildel valgfrie BOM-artikler til produksjonsordre" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 #: stock/api.py:745 msgid "BOM Item" msgstr "BOM-artikkel" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "Tildelt lagerbeholdning" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "I bestilling" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "I produksjon" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "Tilgjengelig lagerbeholdning" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "Lagerbeholdning kreves for produksjonsordre" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "Forfalt produksjonsordre" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "Produksjonsordre {bo} er nå forfalt" @@ -1862,7 +1867,7 @@ msgstr "Fullførte byggeresultater" #: templates/js/translated/pricing.js:929 #: templates/js/translated/sales_order.js:769 #: templates/js/translated/sales_order.js:992 -#: templates/js/translated/stock.js:2888 +#: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "Salgsordre" @@ -1920,8 +1925,8 @@ msgstr "Tildelte deler" #: templates/js/translated/build.js:1377 #: templates/js/translated/model_renderers.js:235 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153 -#: templates/js/translated/stock.js:3091 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" @@ -1990,27 +1995,31 @@ msgstr "Bestill nødvendige deler" msgid "Order Parts" msgstr "Bestill deler" -#: build/templates/build/detail.html:210 +#: 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 "Ufullstendige Produksjonsartikler" -#: build/templates/build/detail.html:214 +#: build/templates/build/detail.html:219 msgid "Create new build output" msgstr "Opprett ny produksjonsartikkel" -#: build/templates/build/detail.html:215 +#: build/templates/build/detail.html:220 msgid "New Build Output" msgstr "Ny Produksjonsartikkel" -#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "Brukt lagerbeholdning" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "Fullførte produksjonsartikkel" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2026,15 +2035,15 @@ msgstr "Fullførte produksjonsartikkel" msgid "Attachments" msgstr "Vedlegg" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "Produksjonsnotater" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "Tildeling fullført" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" msgstr "Alle linjer er fullt tildelt" @@ -2112,1390 +2121,1414 @@ msgstr "Prosjektbeskrivelse" msgid "User or group responsible for this project" msgstr "Bruker eller gruppe ansvarlig for dette prosjektet" -#: common/models.py:737 +#: common/models.py:744 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:741 +#: common/models.py:748 msgid "Settings value" msgstr "Innstillings verdi" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "Valgt verdi er ikke et gyldig alternativ" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "Verdien må være en boolsk verdi" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "Verdien må være et heltall" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "Nøkkelstreng må være unik" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "Ingen gruppe" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "Et tomt domene er ikke tillatt." -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "Ugyldig domenenavn: {domain}" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "Ingen programtillegg" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "Omstart kreves" -#: common/models.py:1231 +#: common/models.py:1238 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:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "Ventende migrasjoner" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "Antall ventende databasemigreringer" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "Navn på serverinstans" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "Strengbeskrivelse for serverinstansen" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "Bruk instansnavn" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "Bruk instansnavnet på tittellinjen" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "Begrens visning av 'om'" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "Vis `about`-modal kun til superbrukere" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "Firmanavn" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "Internt firmanavn" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "Base-URL" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "Base-URL for serverinstans" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "Standardvaluta" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "Velg grunnvalutaen for prisberegninger" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "Oppdateringsintervall for valuta" -#: common/models.py:1283 +#: common/models.py:1290 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:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "dager" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "Valutaoppdaterings-plugin" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" msgstr "Valgt valutaoppdaterings-plugin" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "Last ned fra URL" -#: common/models.py:1298 +#: common/models.py:1305 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:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "Nedlastingsgrense" -#: common/models.py:1305 +#: common/models.py:1312 msgid "Maximum allowable download size for remote image" msgstr "Maksimal tillatt nedlastingsstørrelse for eksternt bilde" -#: common/models.py:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "User-Agent brukt for å laste ned fra URL" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "Streng URL-validering" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "Krev skjemaspesifikasjon ved validering av URLer" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "Krev bekreftelse" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "Krev eksplisitt brukerbekreftelse for visse handlinger." -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "Tredybde" -#: common/models.py:1332 +#: common/models.py:1339 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:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "Intervall for oppdateringssjekk" -#: common/models.py:1339 +#: common/models.py:1346 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:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "Automatisk sikkerhetskopiering" -#: common/models.py:1346 +#: common/models.py:1353 msgid "Enable automatic backup of database and media files" msgstr "Aktiver automatisk sikkerhetskopiering av database og mediafiler" -#: common/models.py:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "Automatisk sikkerhetskopieringsintervall" -#: common/models.py:1352 +#: common/models.py:1359 msgid "Specify number of days between automated backup events" msgstr "Angi antall dager mellom automatiske sikkerhetskopieringshendelser" -#: common/models.py:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "Slettingsintervall for oppgaver" -#: common/models.py:1360 +#: common/models.py:1367 msgid "Background task results will be deleted after specified number of days" msgstr "Bakgrunnsoppgaveresultater vil bli slettet etter antall angitte dager" -#: common/models.py:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "Slettingsintervall for feillogg" -#: common/models.py:1369 +#: common/models.py:1376 msgid "Error logs will be deleted after specified number of days" msgstr "Feilloggene vil bli slettet etter et angitt antall dager" -#: common/models.py:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "Slettingsintervall for varsler" -#: common/models.py:1378 +#: common/models.py:1385 msgid "User notifications will be deleted after specified number of days" msgstr "Brukervarsler slettes etter angitt antall dager" -#: common/models.py:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Strekkodestøtte" -#: common/models.py:1386 +#: common/models.py:1393 msgid "Enable barcode scanner support in the web interface" msgstr "Aktiver støtte for strekkodeleser i webgrensesnittet" -#: common/models.py:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "Innlesingsforsinkelse for strekkode" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "Tidsforsinkelse for behandling av strekkode" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "Støtte for strekkodewebkamera" -#: common/models.py:1399 +#: common/models.py:1406 msgid "Allow barcode scanning via webcam in browser" msgstr "Tillat strekkodelesning via webkamera i nettleseren" -#: common/models.py:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "Delrevisjoner" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" msgstr "Aktiver revisjonsfeltet for Del" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "IPN regex" -#: common/models.py:1411 +#: common/models.py:1418 msgid "Regular expression pattern for matching Part IPN" msgstr "Regulært uttrykksmønster for matching av internt delnummer" -#: common/models.py:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "Tilat duplikat av internt delnummer" -#: common/models.py:1415 +#: common/models.py:1422 msgid "Allow multiple parts to share the same IPN" msgstr "Tillat flere deler å dele samme interne delnummer" -#: common/models.py:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "Tillat redigering av internt delnummer" -#: common/models.py:1421 +#: common/models.py:1428 msgid "Allow changing the IPN value while editing a part" msgstr "Tillat endring av IPN-verdien mens du redigerer en del" -#: common/models.py:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "Kopier BOM-data fra del" -#: common/models.py:1427 +#: common/models.py:1434 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:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "Kopier parameterdata fra del" -#: common/models.py:1433 +#: common/models.py:1440 msgid "Copy parameter data by default when duplicating a part" msgstr "Kopier parameterdata som standard ved duplisering av en del" -#: common/models.py:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "Kopier testdata fra del" -#: common/models.py:1439 +#: common/models.py:1446 msgid "Copy test data by default when duplicating a part" msgstr "Kopier testdata som standard ved duplisering av en del" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "Kopier designmaler for kategoriparametere" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Copy category parameter templates when creating a part" msgstr "Kopier parametermaler for kategori ved oppretting av en del" -#: common/models.py:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "Mal" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "Deler er maler som standard" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 msgid "Parts can be assembled from other components by default" msgstr "Deler kan settes sammen fra andre komponenter som standard" -#: common/models.py:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "Komponent" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Parts can be used as sub-components by default" msgstr "Deler kan bli brukt som underkomponenter som standard" -#: common/models.py:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "Kjøpbar" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "Deler er kjøpbare som standard" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "Salgbar" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "Deler er salgbare som standard" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "Deler er sporbare som standard" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "Deler er virtuelle som standard" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "Vis import i visninger" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Display the import wizard in some part views" msgstr "Vis importveiviseren i noen deler visninger" -#: common/models.py:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "Vis relaterte deler" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" msgstr "Vis relaterte deler i en del" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "Innledende lagerbeholdningsdata" -#: common/models.py:1505 +#: common/models.py:1512 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:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Innledende leverandørdata" -#: common/models.py:1512 +#: common/models.py:1519 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:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "Visningsformat for delnavn" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "Format for å vise delnavnet" -#: common/models.py:1525 +#: common/models.py:1532 msgid "Part Category Default Icon" msgstr "Standardikon for delkategorier" -#: common/models.py:1526 +#: common/models.py:1533 msgid "Part category default icon (empty means no icon)" msgstr "Standardikon for delkategorier (tomt betyr ingen ikon)" -#: common/models.py:1530 +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "Tving parameterenheter" -#: common/models.py:1532 +#: common/models.py:1539 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:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "Minimum antall desimalplasser for priser" -#: common/models.py:1540 +#: common/models.py:1547 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:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "Maksimalt antall desimalplasser for priser" -#: common/models.py:1548 +#: common/models.py:1555 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:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "Bruk leverandørpriser" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "Inkluder leverandørprisbrudd i beregninger av totalpriser" -#: common/models.py:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "Innkjøpshistorikkoverstyring" -#: common/models.py:1564 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "Historiske innkjøpspriser overstyrer leverandørprisnivåer" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "Bruk lagervarepriser" -#: common/models.py:1572 +#: 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:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "Lagervare prisalder" -#: common/models.py:1580 +#: 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:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "Bruk Variantpriser" -#: common/models.py:1588 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "Inkluder variantpriser i beregninger av totale priser" -#: common/models.py:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "Kun aktive varianter" -#: common/models.py:1595 +#: 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:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "Intervall for rekalkulering av priser" -#: common/models.py:1603 +#: 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:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "Interne Priser" -#: common/models.py:1611 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "Aktiver interne priser for deler" -#: common/models.py:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "Intern prisoverstyring" -#: common/models.py:1618 +#: 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:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "Aktiver etikettutskrift" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "Aktiver utskrift av etiketter fra nettleseren" -#: common/models.py:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "Etikettbilde-DPI" -#: common/models.py:1632 +#: 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:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "Aktiver Rapporter" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "Aktiver generering av rapporter" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "Feilsøkingsmodus" -#: common/models.py:1645 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "Generer rapporter i feilsøkingsmodus (HTML-output)" -#: common/models.py:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: 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:202 msgid "Page Size" msgstr "Sidestørrelse" -#: common/models.py:1651 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "Standard sidestørrelse for PDF-rapporter" -#: common/models.py:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "Aktiver Testrapporter" -#: common/models.py:1657 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "Aktiver generering av testrapporter" -#: common/models.py:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "Legg ved testrapporter" -#: common/models.py:1664 +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "Globalt Unike Serienummer" -#: common/models.py:1671 +#: 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:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "Automatisk tildeling av Serienummer" -#: common/models.py:1677 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "Aumatisk fyll ut serienummer i skjemaer" -#: common/models.py:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "Slett oppbrukt lagerbeholdning" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "Bestemmer standard oppførsel når en lagervare er oppbrukt" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "Batchkodemal" -#: common/models.py:1692 +#: 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:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "Lagerbeholdning utløper" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "Aktiver funksjonalitet for utløp av lagerbeholdning" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "Selg utløpt lagerbeholdning" -#: common/models.py:1704 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "Tillat salg av utgått lagerbeholdning" -#: common/models.py:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "Foreldet lagerbeholdning tidsintervall" -#: common/models.py:1711 +#: 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:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "Produsér Utløpt Lagerbeholdning" -#: common/models.py:1719 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "Tillat produksjon med utløpt lagerbeholdning" -#: common/models.py:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "Kontroll over eierskap av lagerbeholdning" -#: common/models.py:1725 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "Aktiver eierskap over lagerplasseringer og -varer" -#: common/models.py:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "Lagerplassering standard ikon" -#: common/models.py:1731 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "Lagerplassering standard ikon (tomt betyr ingen ikon)" -#: common/models.py:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "Vis installerte lagervarer" -#: common/models.py:1736 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "Vis installerte lagervarer i lagertabeller" -#: common/models.py:1741 +#: 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 "Build Order Reference Pattern" msgstr "Produksjonsordre-referansemønster" -#: common/models.py:1743 +#: common/models.py:1764 msgid "Required pattern for generating Build Order reference field" msgstr "Nødvendig mønster for å generere Produksjonsordre-referansefeltet" -#: common/models.py:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "Aktiver returordrer" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "Aktiver returordrefunksjonalitet i brukergrensesnittet" -#: common/models.py:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "Returordre-referansemønster" -#: common/models.py:1757 +#: common/models.py:1778 msgid "Required pattern for generating Return Order reference field" -msgstr "Påkrevd mønster for å generere returordrereferansefelt" +msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "Rediger fullførte returordrer" -#: common/models.py:1765 +#: common/models.py:1786 msgid "Allow editing of return orders after they have been completed" msgstr "Tillat redigering av returordrer etter de er fullført" -#: common/models.py:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "Salgsordre-referansemønster" -#: common/models.py:1773 +#: common/models.py:1794 msgid "Required pattern for generating Sales Order reference field" msgstr "Påkrevd mønster for å generere salgsordrereferansefelt" -#: common/models.py:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "Salgsordre standard fraktmetode" -#: common/models.py:1780 +#: common/models.py:1801 msgid "Enable creation of default shipment with sales orders" msgstr "Aktiver opprettelse av standard forsendelse med salgsordrer" -#: common/models.py:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "Rediger fullførte salgsordrer" -#: common/models.py:1787 +#: common/models.py:1808 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:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "Referansemønster for innkjøpsordre" -#: common/models.py:1795 +#: common/models.py:1816 msgid "Required pattern for generating Purchase Order reference field" msgstr "Obligatorisk mønster for generering av referansefelt for innkjøpsordre" -#: common/models.py:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "Rediger fullførte innkjøpsordre" -#: common/models.py:1803 +#: common/models.py:1824 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:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "Autofullfør innkjøpsordrer" -#: common/models.py:1811 +#: common/models.py:1832 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:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "Aktiver passord glemt" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" msgstr "Ativer funskjon for glemt passord på innloggingssidene" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "Aktiver registrering" -#: common/models.py:1825 +#: common/models.py:1846 msgid "Enable self-registration for users on the login pages" msgstr "Aktiver egenregistrerting for brukerer på påloggingssidene" -#: common/models.py:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "Aktiver SSO" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "Aktiver SSO på innloggingssidene" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "Aktiver SSO-registrering" -#: common/models.py:1838 +#: common/models.py:1859 msgid "Enable self-registration via SSO for users on the login pages" msgstr "Aktiver selvregistrering via SSO for brukere på innloggingssiden" -#: common/models.py:1844 +#: common/models.py:1865 msgid "Email required" msgstr "E-postadresse kreves" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "Krevt at brukere angir e-post ved registrering" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "Auto-utfyll SSO-brukere" -#: common/models.py:1852 +#: common/models.py:1873 msgid "Automatically fill out user-details from SSO account-data" msgstr "Fyll automatisk ut brukeropplysninger fra SSO-kontodata" -#: common/models.py:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "E-post to ganger" -#: common/models.py:1859 +#: common/models.py:1880 msgid "On signup ask users twice for their mail" msgstr "Spør brukeren om e-post to ganger ved registrering" -#: common/models.py:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "Passord to ganger" -#: common/models.py:1865 +#: common/models.py:1886 msgid "On signup ask users twice for their password" msgstr "Spør brukeren om passord to ganger ved registrering" -#: common/models.py:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "Tillatte domener" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "Begrens registrering til bestemte domener (kommaseparert, begynner med @)" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "Gruppe ved registrering" -#: common/models.py:1879 +#: common/models.py:1900 msgid "Group to which new users are assigned on registration" msgstr "Gruppe nye brukere blir tilknyttet ved registrering" -#: common/models.py:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "Krev MFA" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "Brukere må bruke flerfaktorsikkerhet." -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "Sjekk utvidelser ved oppstart" -#: common/models.py:1892 +#: common/models.py:1913 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:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "Aktiver URL-integrasjon" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "Tillat utvidelser å legge til URL-ruter" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "Aktiver navigasjonsintegrasjon" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "Tillat utvidelser å integrere mot navigasjon" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "Aktiver app-integrasjon" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "Tillat utvidelser å legge til apper" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "Aktiver tidsplanintegrasjon" -#: common/models.py:1929 +#: common/models.py:1950 msgid "Enable plugins to run scheduled tasks" msgstr "Tillat utvidelser å kjøre planlagte oppgaver" -#: common/models.py:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "Aktiver hendelsesintegrasjon" -#: common/models.py:1936 +#: common/models.py:1957 msgid "Enable plugins to respond to internal events" msgstr "Tillat utvidelser å reagere på interne hendelser" -#: common/models.py:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "Aktiver prosjektkoder" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "Aktiver prosjektkoder for å spore prosjekter" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "Varetellingsfunksjonalitet" -#: common/models.py:1950 +#: common/models.py:1971 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:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "Ekskluder eksterne plasseringer" -#: common/models.py:1958 +#: common/models.py:1979 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "Eksluder lagervarer i eksterne plasseringer fra varetellinger" -#: common/models.py:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "Automatisk varetellingsperiode" -#: common/models.py:1966 +#: common/models.py:1987 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:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "Rapportslettingsintervall" -#: common/models.py:1974 +#: common/models.py:1995 msgid "Stocktake reports will be deleted after specified number of days" msgstr "Varetellingsrapporter vil slettes etter angitt antall dager" -#: common/models.py:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "Vis brukernes fulle navn" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" msgstr "Vis brukernes fulle navn istedet for brukernavn" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2029 common/models.py:2429 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:2043 +#: common/models.py:2070 msgid "Hide inactive parts" msgstr "Skjul inaktive elementer" -#: common/models.py:2045 +#: common/models.py:2072 msgid "Hide inactive parts in results displayed on the homepage" msgstr "Skjul inaktive deler i resultater som vises på hjemmesiden" -#: common/models.py:2051 +#: common/models.py:2078 msgid "Show subscribed parts" msgstr "Vis abonnerte deler" -#: common/models.py:2052 +#: common/models.py:2079 msgid "Show subscribed parts on the homepage" msgstr "Vis abonnerte deler på startsiden" -#: common/models.py:2057 +#: common/models.py:2084 msgid "Show subscribed categories" msgstr "Vis abonnerte kategorier" -#: common/models.py:2058 +#: common/models.py:2085 msgid "Show subscribed part categories on the homepage" msgstr "Vis abonnerte delkatekorier på startsiden" -#: common/models.py:2063 +#: common/models.py:2090 msgid "Show latest parts" msgstr "Vis nyeste deler" -#: common/models.py:2064 +#: common/models.py:2091 msgid "Show latest parts on the homepage" msgstr "Vis nyeste deler på startsiden" -#: common/models.py:2069 +#: common/models.py:2096 msgid "Show unvalidated BOMs" msgstr "Vis uvaliderte stykklister" -#: common/models.py:2070 +#: common/models.py:2097 msgid "Show BOMs that await validation on the homepage" msgstr "Vis stykklister som venter på validering på startsiden" -#: common/models.py:2075 +#: common/models.py:2102 msgid "Show recent stock changes" msgstr "Vis nylige lagerendringer" -#: common/models.py:2076 +#: common/models.py:2103 msgid "Show recently changed stock items on the homepage" msgstr "Vis nylig endrede lagervarer på startsiden" -#: common/models.py:2081 +#: common/models.py:2108 msgid "Show low stock" msgstr "Vis lav lagerbeholdning" -#: common/models.py:2082 +#: common/models.py:2109 msgid "Show low stock items on the homepage" msgstr "Vis lave lagervarer på startsiden" -#: common/models.py:2087 +#: common/models.py:2114 msgid "Show depleted stock" msgstr "Vis tomme lagervarer" -#: common/models.py:2088 +#: common/models.py:2115 msgid "Show depleted stock items on the homepage" msgstr "Vis tom lagerbeholdning på startsiden" -#: common/models.py:2093 +#: common/models.py:2120 msgid "Show needed stock" msgstr "Vis nødvendig lagerbeholdning" -#: common/models.py:2094 +#: common/models.py:2121 msgid "Show stock items needed for builds on the homepage" msgstr "Vis lagervarer som trengs for produksjon på startsiden" -#: common/models.py:2099 +#: common/models.py:2126 msgid "Show expired stock" msgstr "Vis utløpt lagerbeholdning" -#: common/models.py:2100 +#: common/models.py:2127 msgid "Show expired stock items on the homepage" msgstr "Vis utløpte lagervarer på startsiden" -#: common/models.py:2105 +#: common/models.py:2132 msgid "Show stale stock" msgstr "Vis foreldet lagerbeholdning" -#: common/models.py:2106 +#: common/models.py:2133 msgid "Show stale stock items on the homepage" msgstr "Vis foreldet lagerbeholdning på startsiden" -#: common/models.py:2111 +#: common/models.py:2138 msgid "Show pending builds" msgstr "Vis ventende produksjoner" -#: common/models.py:2112 +#: common/models.py:2139 msgid "Show pending builds on the homepage" msgstr "Vi ventende produksjoner på startsiden" -#: common/models.py:2117 +#: common/models.py:2144 msgid "Show overdue builds" msgstr "Vis forfalte produksjoner" -#: common/models.py:2118 +#: common/models.py:2145 msgid "Show overdue builds on the homepage" msgstr "Vis forfalte produksjoner på startsiden" -#: common/models.py:2123 +#: common/models.py:2150 msgid "Show outstanding POs" msgstr "Vis utestående Innkjøpsordrer" -#: common/models.py:2124 +#: common/models.py:2151 msgid "Show outstanding POs on the homepage" msgstr "Vis utestående Innkjøpsordrer på startsiden" -#: common/models.py:2129 +#: common/models.py:2156 msgid "Show overdue POs" msgstr "Vis forfalte Innkjøpsordrer" -#: common/models.py:2130 +#: common/models.py:2157 msgid "Show overdue POs on the homepage" msgstr "Vis forfalte Innkjøpsordrer på startsiden" -#: common/models.py:2135 +#: common/models.py:2162 msgid "Show outstanding SOs" msgstr "Vis utestående Salgsordrer" -#: common/models.py:2136 +#: common/models.py:2163 msgid "Show outstanding SOs on the homepage" msgstr "Vis utestående Salgsordrer på startsiden" -#: common/models.py:2141 +#: common/models.py:2168 msgid "Show overdue SOs" msgstr "Vis forfalte SOer" -#: common/models.py:2142 +#: common/models.py:2169 msgid "Show overdue SOs on the homepage" msgstr "Vis forfalte SOer på startsiden" -#: common/models.py:2147 +#: common/models.py:2174 msgid "Show pending SO shipments" msgstr "Vis ventende SO-forsendelser" -#: common/models.py:2148 +#: common/models.py:2175 msgid "Show pending SO shipments on the homepage" msgstr "Vis ventende SO-forsendelser på startsiden" -#: common/models.py:2153 +#: common/models.py:2180 msgid "Show News" msgstr "Vis Nyheter" -#: common/models.py:2154 +#: common/models.py:2181 msgid "Show news on the homepage" msgstr "Vis nyheter på startsiden" -#: common/models.py:2159 +#: common/models.py:2186 msgid "Inline label display" msgstr "Innebygd etikettvisning" -#: common/models.py:2161 +#: common/models.py:2188 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:2167 +#: common/models.py:2194 msgid "Default label printer" msgstr "Standard etikettskriver" -#: common/models.py:2169 +#: common/models.py:2196 msgid "Configure which label printer should be selected by default" msgstr "Konfigurer hvilken etikettskriver som skal være valgt som standard" -#: common/models.py:2175 +#: common/models.py:2202 msgid "Inline report display" msgstr "Innebygd rapportvisning" -#: common/models.py:2177 +#: common/models.py:2204 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:2183 +#: common/models.py:2210 msgid "Search Parts" msgstr "Søk i Deler" -#: common/models.py:2184 +#: common/models.py:2211 msgid "Display parts in search preview window" msgstr "Vis deler i forhåndsvsningsvinduet for søk" -#: common/models.py:2189 +#: common/models.py:2216 msgid "Search Supplier Parts" msgstr "Søk i Leverandørdeler" -#: common/models.py:2190 +#: common/models.py:2217 msgid "Display supplier parts in search preview window" msgstr "Vis leverandørdeler i forhåndsvisningsvinduet for søk" -#: common/models.py:2195 +#: common/models.py:2222 msgid "Search Manufacturer Parts" msgstr "Søk i Produsentdeler" -#: common/models.py:2196 +#: common/models.py:2223 msgid "Display manufacturer parts in search preview window" msgstr "Vis produsentdeler i forhåndsvisningsvinduet for søk" -#: common/models.py:2201 +#: common/models.py:2228 msgid "Hide Inactive Parts" msgstr "Skjul Inaktive Deler" -#: common/models.py:2202 +#: common/models.py:2229 msgid "Excluded inactive parts from search preview window" msgstr "Ekskluder inaktive deler fra forhåndsvisningsvinduet for søk" -#: common/models.py:2207 +#: common/models.py:2234 msgid "Search Categories" msgstr "Søk i kategorier" -#: common/models.py:2208 +#: common/models.py:2235 msgid "Display part categories in search preview window" msgstr "Vis delkategorier i forhåndsvisningsvinduet for søk" -#: common/models.py:2213 +#: common/models.py:2240 msgid "Search Stock" msgstr "Søk i lagerbeholdning" -#: common/models.py:2214 +#: common/models.py:2241 msgid "Display stock items in search preview window" msgstr "Vis lagervarer i forhåndsvisningsvinduet for søk" -#: common/models.py:2219 +#: common/models.py:2246 msgid "Hide Unavailable Stock Items" msgstr "Skjul utilgjengelige Lagervarer" -#: common/models.py:2221 +#: common/models.py:2248 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:2227 +#: common/models.py:2254 msgid "Search Locations" msgstr "Søk i Plasseringer" -#: common/models.py:2228 +#: common/models.py:2255 msgid "Display stock locations in search preview window" msgstr "Vis lagerplasseringer i forhåndsvisningsvinduet for søk" -#: common/models.py:2233 +#: common/models.py:2260 msgid "Search Companies" msgstr "Søk i Firma" -#: common/models.py:2234 +#: common/models.py:2261 msgid "Display companies in search preview window" msgstr "Vis firma i forhåndsvsningsvinduet for søk" -#: common/models.py:2239 +#: common/models.py:2266 msgid "Search Build Orders" msgstr "Søk i Produksjonsordrer" -#: common/models.py:2240 +#: common/models.py:2267 msgid "Display build orders in search preview window" msgstr "Vis produksjonsordrer i forhåndsvisningsvinduet for søk" -#: common/models.py:2245 +#: common/models.py:2272 msgid "Search Purchase Orders" msgstr "Søk i Innkjøpsordrer" -#: common/models.py:2246 +#: common/models.py:2273 msgid "Display purchase orders in search preview window" msgstr "Vis innkjøpsordrer i forhåndsvisningsvinduet for søk" -#: common/models.py:2251 +#: common/models.py:2278 msgid "Exclude Inactive Purchase Orders" msgstr "Ekskluder inaktive Innkjøpsordrer" -#: common/models.py:2253 +#: common/models.py:2280 msgid "Exclude inactive purchase orders from search preview window" msgstr "Ekskluder inaktive innkjøpsordrer fra forhåndsvisningsvinduet for søk" -#: common/models.py:2259 +#: common/models.py:2286 msgid "Search Sales Orders" msgstr "Søk i Salgsordrer" -#: common/models.py:2260 +#: common/models.py:2287 msgid "Display sales orders in search preview window" msgstr "Vis salgsordrer i forhåndsvisningsvinduet for søk" -#: common/models.py:2265 +#: common/models.py:2292 msgid "Exclude Inactive Sales Orders" msgstr "Ekskluder Inaktive Salgsordrer" -#: common/models.py:2267 +#: common/models.py:2294 msgid "Exclude inactive sales orders from search preview window" msgstr "Ekskluder inaktive salgsordrer fra forhåndsvisningsvinduet for søk" -#: common/models.py:2273 +#: common/models.py:2300 msgid "Search Return Orders" msgstr "Søk i Returordrer" -#: common/models.py:2274 +#: common/models.py:2301 msgid "Display return orders in search preview window" msgstr "Vis returordrer i forhåndsvisningsvinduet for søk" -#: common/models.py:2279 +#: common/models.py:2306 msgid "Exclude Inactive Return Orders" msgstr "Ekskluder Inaktive Returordrer" -#: common/models.py:2281 +#: common/models.py:2308 msgid "Exclude inactive return orders from search preview window" msgstr "Ekskluder inaktive returordrer fra forhåndsvisningsvinduet for søk" -#: common/models.py:2287 +#: common/models.py:2314 msgid "Search Preview Results" msgstr "Forhåndsvisning av søkeresultater" -#: common/models.py:2289 +#: common/models.py:2316 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:2295 +#: common/models.py:2322 msgid "Regex Search" msgstr "Regex-søk" -#: common/models.py:2296 +#: common/models.py:2323 msgid "Enable regular expressions in search queries" msgstr "Aktiver regulære uttrykk i søkeord" -#: common/models.py:2301 +#: common/models.py:2328 msgid "Whole Word Search" msgstr "Helordsøk" -#: common/models.py:2302 +#: common/models.py:2329 msgid "Search queries return results for whole word matches" msgstr "Søk returnerer resultater for treff med hele ord" -#: common/models.py:2307 +#: common/models.py:2334 msgid "Show Quantity in Forms" msgstr "Vis antall i skjemaer" -#: common/models.py:2308 +#: common/models.py:2335 msgid "Display available part quantity in some forms" msgstr "Vis antall tilgjengelige deler i noen skjemaer" -#: common/models.py:2313 +#: common/models.py:2340 msgid "Escape Key Closes Forms" msgstr "Escape-knappen lukker skjemaer" -#: common/models.py:2314 +#: common/models.py:2341 msgid "Use the escape key to close modal forms" msgstr "Bruk Escape-knappen for å lukke modal-skjemaer" -#: common/models.py:2319 +#: common/models.py:2346 msgid "Fixed Navbar" msgstr "Fast navigasjonsbar" -#: common/models.py:2320 +#: common/models.py:2347 msgid "The navbar position is fixed to the top of the screen" msgstr "Navigasjonsbarens posisjon er fast på toppen av skjermen" -#: common/models.py:2325 +#: common/models.py:2352 msgid "Date Format" msgstr "Datoformat" -#: common/models.py:2326 +#: common/models.py:2353 msgid "Preferred format for displaying dates" msgstr "Foretrukket format for å vise datoer" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2366 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Delplanlegging" -#: common/models.py:2340 +#: common/models.py:2367 msgid "Display part scheduling information" msgstr "Vis delplanleggingsinformasjon" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2372 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Lagertelling for Del" -#: common/models.py:2347 +#: common/models.py:2374 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "Vis lagertellingsinformasjon for del (om lagertellingsfunksjonalitet er aktivert)" -#: common/models.py:2353 +#: common/models.py:2380 msgid "Table String Length" msgstr "Tabellstrenglengde" -#: common/models.py:2355 +#: common/models.py:2382 msgid "Maximum length limit for strings displayed in table views" msgstr "Maksimal lengdegrense for tekst vist i tabeller" -#: common/models.py:2361 +#: common/models.py:2388 msgid "Default part label template" msgstr "Standard etikettmal for del" -#: common/models.py:2362 +#: common/models.py:2389 msgid "The part label template to be automatically selected" msgstr "Etikettmalen for del som velges automatisk" -#: common/models.py:2367 +#: common/models.py:2394 msgid "Default stock item template" msgstr "Standard etikettmal for lagervare" -#: common/models.py:2369 +#: common/models.py:2396 msgid "The stock item label template to be automatically selected" msgstr "Etikettmalen for lagervare som velges automatisk" -#: common/models.py:2375 +#: common/models.py:2402 msgid "Default stock location label template" msgstr "Standard etikettmal for lagerplassering" -#: common/models.py:2377 +#: common/models.py:2404 msgid "The stock location label template to be automatically selected" msgstr "Etikettmalen for lagerplassering som velges automatisk" -#: common/models.py:2383 +#: common/models.py:2410 msgid "Receive error reports" msgstr "Motta feilrapporter" -#: common/models.py:2384 +#: common/models.py:2411 msgid "Receive notifications for system errors" msgstr "Motta varsler om systemfeil" -#: common/models.py:2389 +#: common/models.py:2416 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2417 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2460 msgid "Price break quantity" msgstr "Antall for prisbrudd" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3503,23 +3536,23 @@ msgstr "Antall for prisbrudd" msgid "Price" msgstr "Pris" -#: common/models.py:2441 +#: common/models.py:2468 msgid "Unit price at specified quantity" msgstr "Enhetspris på spesifisert antall" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2639 common/models.py:2824 msgid "Endpoint" msgstr "Endepunkt" -#: common/models.py:2613 +#: common/models.py:2640 msgid "Endpoint at which this webhook is received" msgstr "Endepunktet hvor denne webhooken er mottatt" -#: common/models.py:2623 +#: common/models.py:2650 msgid "Name for this webhook" msgstr "Navn for webhooken" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3529,101 +3562,101 @@ msgstr "Navn for webhooken" msgid "Active" msgstr "Aktiv" -#: common/models.py:2627 +#: common/models.py:2654 msgid "Is this webhook active" msgstr "Er webhooken aktiv" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2670 users/models.py:148 msgid "Token" msgstr "Sjetong" -#: common/models.py:2644 +#: common/models.py:2671 msgid "Token for access" msgstr "Nøkkel for tilgang" -#: common/models.py:2652 +#: common/models.py:2679 msgid "Secret" msgstr "Hemmelig" -#: common/models.py:2653 +#: common/models.py:2680 msgid "Shared secret for HMAC" msgstr "Delt hemmlighet for HMAC" -#: common/models.py:2761 +#: common/models.py:2788 msgid "Message ID" msgstr "Melding ID" -#: common/models.py:2762 +#: common/models.py:2789 msgid "Unique identifier for this message" msgstr "Unik Id for denne meldingen" -#: common/models.py:2770 +#: common/models.py:2797 msgid "Host" msgstr "Vert" -#: common/models.py:2771 +#: common/models.py:2798 msgid "Host from which this message was received" msgstr "Verten denne meldingen ble mottatt fra" -#: common/models.py:2779 +#: common/models.py:2806 msgid "Header" msgstr "Tittel" -#: common/models.py:2780 +#: common/models.py:2807 msgid "Header of this message" msgstr "Overskrift for denne meldingen" -#: common/models.py:2787 +#: common/models.py:2814 msgid "Body" msgstr "Brødtekst" -#: common/models.py:2788 +#: common/models.py:2815 msgid "Body of this message" msgstr "Innholdet i meldingen" -#: common/models.py:2798 +#: common/models.py:2825 msgid "Endpoint on which this message was received" msgstr "Endepunktet meldingen ble mottatt fra" -#: common/models.py:2803 +#: common/models.py:2830 msgid "Worked on" msgstr "Arbeidet med" -#: common/models.py:2804 +#: common/models.py:2831 msgid "Was the work on this message finished?" msgstr "Var arbeidet med denne meldingen ferdig?" -#: common/models.py:2930 +#: common/models.py:2957 msgid "Id" msgstr "Id" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2959 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "Tittel" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2963 templates/js/translated/news.js:60 msgid "Published" msgstr "Publisert" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2965 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2967 templates/js/translated/news.js:52 msgid "Summary" msgstr "Sammendrag" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Read" msgstr "Les" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Was this news item read?" msgstr "Er dette nyhetselementet lest?" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2987 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3633,31 +3666,31 @@ msgstr "Er dette nyhetselementet lest?" msgid "Image" msgstr "Bilde" -#: common/models.py:2960 +#: common/models.py:2987 msgid "Image file" msgstr "Bildefil" -#: common/models.py:3002 +#: common/models.py:3029 msgid "Unit name must be a valid identifier" msgstr "Enhetsnavn må være en gyldig identifikator" -#: common/models.py:3021 +#: common/models.py:3048 msgid "Unit name" msgstr "Enhetsnavn" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "Symbol" -#: common/models.py:3029 +#: common/models.py:3056 msgid "Optional unit symbol" msgstr "Valgfritt enhetssymbol" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "Definisjon" -#: common/models.py:3037 +#: common/models.py:3064 msgid "Unit definition" msgstr "Enhetsdefinisjon" @@ -3961,7 +3994,7 @@ msgid "Link to address information (external)" msgstr "Lenke til adresseinformasjon (ekstern)" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Basisdel" @@ -3972,7 +4005,7 @@ msgstr "Velg del" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3987,7 +4020,7 @@ msgid "Select manufacturer" msgstr "Velg produsent" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4022,9 +4055,9 @@ msgstr "Parameternavn" #: company/models.py:615 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2438 templates/js/translated/company.js:1156 +#: stock/models.py:2441 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1519 msgid "Value" msgstr "Verdi" @@ -4033,7 +4066,7 @@ msgid "Parameter value" msgstr "Parameterverdi" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4059,7 +4092,7 @@ msgstr "Den sammenkoblede produsentdelen må referere til samme basisdel" #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4076,7 +4109,7 @@ msgstr "Leverandør" msgid "Select supplier" msgstr "Velg leverandør" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "Leverandørens lagerbeholdningsenhet" @@ -4093,13 +4126,13 @@ msgid "Supplier part description" msgstr "Leverandørens delbeskrivelse" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:579 msgid "Note" msgstr "Notat" @@ -4112,10 +4145,10 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "Minimum betaling (f.eks. lageravgift)" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 -#: templates/js/translated/stock.js:2387 +#: templates/js/translated/stock.js:2423 msgid "Packaging" msgstr "Emballasje" @@ -4157,7 +4190,7 @@ msgstr "Tilgjengelighet oppdatert" msgid "Date of last update of availability data" msgstr "Dato for siste oppdatering av tilgjengelighetsdata" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "Standardvaluta brukt for denne leverandøren" @@ -4218,13 +4251,13 @@ msgstr "Slett bilde" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1100 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 #: templates/js/translated/return_order.js:296 #: templates/js/translated/sales_order.js:784 -#: templates/js/translated/stock.js:2923 +#: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:804 msgid "Customer" msgstr "Kunde" @@ -4429,8 +4462,9 @@ 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/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "Leverandører" @@ -4482,7 +4516,7 @@ msgstr "Adresser" #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2243 +#: templates/js/translated/stock.js:2279 msgid "Supplier Part" msgstr "Leverandørdel" @@ -4528,7 +4562,7 @@ 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:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4577,15 +4611,17 @@ msgstr "" msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 -#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:193 msgid "Stock Items" msgstr "Lagervarer" @@ -4639,8 +4675,8 @@ msgstr "Etikett" msgid "Label template file" msgstr "Etikett-malfil" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "Aktivert" @@ -4665,7 +4701,7 @@ msgstr "Høyde [mm]" msgid "Label height, specified in mm" msgstr "Etiketthøyde, spesifisert i mm" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "Filnavnmønster" @@ -4679,8 +4715,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "Søkefiltre (kommaseparert liste over nøkkel=verdi-par)" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "Filtre" @@ -4821,7 +4857,7 @@ msgstr "Ingen samsvarende innkjøpsordre funnet" #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1674 -#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "Innkjøpsordre" @@ -4830,7 +4866,7 @@ msgstr "Innkjøpsordre" #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 -#: templates/js/translated/stock.js:2905 +#: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "Returordre" @@ -4838,11 +4874,11 @@ msgstr "Returordre" msgid "Total price for this order" msgstr "Total pris for denne ordren" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "Ordrevaluta" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" msgstr "Valuta for denne ordren (la stå tom for å bruke firmastandard)" @@ -5029,9 +5065,9 @@ msgstr "Mottatt" msgid "Number of items received" msgstr "Antall enheter mottatt" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2274 +#: templates/js/translated/stock.js:2310 msgid "Purchase Price" msgstr "Innkjøpspris" @@ -5084,8 +5120,8 @@ msgstr "Sjekket Av" msgid "User who checked this shipment" msgstr "Brukeren som sjekket forsendelsen" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "Forsendelse" @@ -5133,7 +5169,7 @@ msgstr "Kan ikke tildele lagerbeholdning til en linje uten en del" msgid "Allocation quantity cannot exceed stock quantity" msgstr "Tildelingsantall kan ikke overstige tilgjengelig lagerbeholdning" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "Antall må være 1 for serialisert lagervare" @@ -5207,159 +5243,159 @@ msgstr "Utfall for dette linjeelementet" msgid "Cost associated with return or repair for this line item" msgstr "Kostnad forbundet med retur eller reparasjon for dette linjeelementet" -#: order/serializers.py:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "Ordren kan ikke kanselleres" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" msgstr "Tillat ordre å lukkes med ufullstendige linjeelementer" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "Ordren har ufullstendige linjeelementer" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "Ordren er ikke åpen" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "Innkjøpsvaluta" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "Leverandørdel må angis" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "Innkjøpsordre må angis" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "Leverandør må samsvare med innkjøpsordre" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "Innkjøpsordre må samsvare med leverandør" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "Ordrelinje" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "Linjeelementet samsvarer ikke med innkjøpsordre" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "Velg lagerplassering for mottatte enheter" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "Angi batchkode for innkommende lagervarer" -#: order/serializers.py:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "Angi serienummer for innkommende lagervarer" -#: order/serializers.py:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Strekkode" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "Skannet strekkode" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "Strekkode allerede i bruk" -#: order/serializers.py:610 +#: order/serializers.py:632 msgid "An integer quantity must be provided for trackable parts" msgstr "Heltallsverdi må angis for sporbare deler" -#: order/serializers.py:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "Linjeelementer må være oppgitt" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "Målplassering må angis" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "Angitte strekkodeverdier må være unike" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "Valuta for salgspris" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "Ingen forsendelsesopplysninger oppgitt" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "Linjeelement er ikke knyttet til denne ordren" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "Mengden må være positiv" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "Skriv inn serienummer for å tildele" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "Forsendelsen er allerede sendt" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "Forsendelsen er ikke knyttet til denne ordren" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "Ingen treff funnet for følgende serienummer" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "Følgende serienummer er allerede tildelt" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "Returordrelinje" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" msgstr "Linjeelementet samsvarer ikke med returordre" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "Linjeelementet er allerede mottatt" -#: order/serializers.py:1655 +#: order/serializers.py:1677 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:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "Valuta for linje" @@ -5733,7 +5769,7 @@ msgid "Pending Shipments" msgstr "Ventende forsendelser" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "Handlinger" @@ -5763,12 +5799,12 @@ 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:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "Del-ID" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "Delnavn" @@ -5780,12 +5816,12 @@ msgstr "Delbeskrivelse" #: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 -#: templates/js/translated/stock.js:1999 +#: templates/js/translated/stock.js:2035 msgid "IPN" msgstr "IPN" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "Revisjon" @@ -5861,10 +5897,10 @@ msgstr "Overordnet navn" msgid "Category Path" msgstr "Sti til kategori" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -5885,17 +5921,17 @@ msgstr "BOM artikkel-ID" msgid "Parent IPN" msgstr "Overodnet IPN" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3897 msgid "Part IPN" msgstr "Del -IPN" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "Minstepris" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5973,8 +6009,8 @@ msgstr "Godkjenn hele Stykklisten" msgid "This option must be selected" msgstr "Dette alternativet må være valgt" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5982,12 +6018,17 @@ msgstr "Dette alternativet må være valgt" msgid "Category" msgstr "Kategori" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Standard plassering" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "Total lagerbeholdning" @@ -5995,7 +6036,7 @@ msgstr "Total lagerbeholdning" msgid "Input quantity for price calculation" msgstr "Sett inn antall for prisberegning" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Delkategori" @@ -6010,7 +6051,8 @@ msgstr "Delkategorier" msgid "Default location for parts in this category" msgstr "Standardplassering for deler i denne kategorien" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 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" @@ -6076,7 +6118,7 @@ msgstr "Del med dette Navnet, internt delnummer og Revisjon eksisterer allerede. msgid "Parts cannot be assigned to structural part categories!" msgstr "Deler kan ikke tilordnes strukturelle delkategorier!" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3896 msgid "Part name" msgstr "Delnavn" @@ -6358,7 +6400,7 @@ msgstr "Total tilgjengelig lagerbeholdning på tidspunkt for varetelling" #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1732 -#: templates/js/translated/stock.js:2785 +#: templates/js/translated/stock.js:2821 msgid "Date" msgstr "Dato" @@ -6410,586 +6452,602 @@ msgstr "Antall deler dekket av varetellingen" msgid "User who requested this stocktake report" msgstr "Bruker som forespurte varetellingsrapporten" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 msgid "Test templates can only be created for trackable parts" msgstr "Testmaler kan bare bli opprettet for sporbare deler" -#: part/models.py:3448 -msgid "Test with this name already exists for this part" -msgstr "Test med dette navnet finnes allerede for denne delen" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" +msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "Testnavn" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "Angi et navn for testen" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "Testbeskrivelse" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "Legg inn beskrivelse for denne testen" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Påkrevd" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "Er det påkrevd at denne testen bestås?" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "Krever verdi" -#: part/models.py:3496 +#: part/models.py:3505 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:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "Krever vedlegg" -#: part/models.py:3503 +#: part/models.py:3512 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:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "Sjekkboksparameter kan ikke ha enheter" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "Sjekkboksparameter kan ikke ha valg" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "Valg må være unike" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "Navn på parametermal må være unikt" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "Parameternavn" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "Fysisk enheter for denne parameteren" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "Parameterbeskrivelse" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "Sjekkboks" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "Er dette parameteret en sjekkboks?" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "Valg" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "Gyldige valg for denne parameteren (kommaseparert)" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "Ugyldig valg for parameterverdi" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "Overordnet del" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "Parametermal" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "Data" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "Parameterverdi" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "Standardverdi" -#: part/models.py:3847 +#: part/models.py:3856 msgid "Default Parameter Value" msgstr "Standard Parameterverdi" -#: part/models.py:3885 +#: part/models.py:3894 msgid "Part ID or part name" msgstr "Del-ID eller delnavn" -#: part/models.py:3886 +#: part/models.py:3895 msgid "Unique part ID value" msgstr "Unik del-ID-verdi" -#: part/models.py:3888 +#: part/models.py:3897 msgid "Part IPN value" msgstr "Delens interne delnummerverdi" -#: part/models.py:3889 +#: part/models.py:3898 msgid "Level" msgstr "Nivå" -#: part/models.py:3889 +#: part/models.py:3898 msgid "BOM level" msgstr "BOM-nivå" -#: part/models.py:3979 +#: part/models.py:3988 msgid "Select parent part" msgstr "Velg overordnet del" -#: part/models.py:3989 +#: part/models.py:3998 msgid "Sub part" msgstr "Underordnet del" -#: part/models.py:3990 +#: part/models.py:3999 msgid "Select part to be used in BOM" msgstr "Velg del som skal brukes i BOM" -#: part/models.py:4001 +#: part/models.py:4010 msgid "BOM quantity for this BOM item" msgstr "BOM-antall for denne BOM-artikkelen" -#: part/models.py:4007 +#: part/models.py:4016 msgid "This BOM item is optional" msgstr "Denne BOM-artikkelen er valgfri" -#: part/models.py:4013 +#: part/models.py:4022 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:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4029 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Svinn" -#: part/models.py:4021 +#: part/models.py:4030 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Forventet produksjonssvinn (absolutt eller prosent)" -#: part/models.py:4028 +#: part/models.py:4037 msgid "BOM item reference" msgstr "BOM-artikkelreferanse" -#: part/models.py:4036 +#: part/models.py:4045 msgid "BOM item notes" msgstr "BOM-artikkelnotater" -#: part/models.py:4042 +#: part/models.py:4051 msgid "Checksum" msgstr "Kontrollsum" -#: part/models.py:4043 +#: part/models.py:4052 msgid "BOM line checksum" msgstr "BOM-linje kontrollsum" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4057 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "Godkjent" -#: part/models.py:4049 +#: part/models.py:4058 msgid "This BOM item has been validated" msgstr "Denne BOM-artikkelen er godkjent" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4063 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:4055 +#: part/models.py:4064 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "Denne BOM-artikkelen er arvet fra stykkliste for variantdeler" -#: part/models.py:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4069 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Tillat Varianter" -#: part/models.py:4061 +#: part/models.py:4070 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:4146 stock/models.py:649 +#: part/models.py:4155 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" msgstr "Antall må være heltallsverdi for sporbare deler" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4165 part/models.py:4167 msgid "Sub part must be specified" msgstr "Underordnet del må angis" -#: part/models.py:4298 +#: part/models.py:4307 msgid "BOM Item Substitute" msgstr "BOM-artikkel erstatning" -#: part/models.py:4319 +#: part/models.py:4328 msgid "Substitute part cannot be the same as the master part" msgstr "Erstatningsdel kan ikke være samme som hoveddelen" -#: part/models.py:4332 +#: part/models.py:4341 msgid "Parent BOM item" msgstr "Overordnet BOM-artikkel" -#: part/models.py:4340 +#: part/models.py:4349 msgid "Substitute part" msgstr "Erstatningsdel" -#: part/models.py:4356 +#: part/models.py:4365 msgid "Part 1" msgstr "Del 1" -#: part/models.py:4364 +#: part/models.py:4373 msgid "Part 2" msgstr "Del 2" -#: part/models.py:4365 +#: part/models.py:4374 msgid "Select Related Part" msgstr "Velg relatert del" -#: part/models.py:4384 +#: part/models.py:4393 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:4389 +#: part/models.py:4398 msgid "Duplicate relationship already exists" msgstr "Duplikatforhold eksisterer allerede" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 msgid "Purchase currency of this stock item" msgstr "Innkjøpsvaluta for lagervaren" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "Ingen deler valgt" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "Velg kategori" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "Original Del" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "Velg original del å duplisere" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "Kopier Bilde" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "Kopier bilde fra originaldel" -#: part/serializers.py:432 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:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "Kopier stykkliste fra original del" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "Kopier parametere" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "Kopier parameterdata fra originaldel" -#: part/serializers.py:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "Kopier notater" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "Kopier notater fra originaldel" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "Innledende lagerbeholdning" -#: part/serializers.py:462 +#: part/serializers.py:480 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:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "Innledende lagerplassering" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "Angi initiell lagerplasering for denne delen" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "Velg leverandør (eller la stå tom for å hoppe over)" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "Velg produsent (eller la stå tom for å hoppe over)" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "Produsentens delenummer" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "Valgt firma er ikke en gyldig leverandør" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "Valgt firma er ikke en gyldig produsent" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "Produsentdel som matcher dette MPN-et, finnes allerede" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "Leverandørdel som matcher denne SKU-en, finnes allerede" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "Dupliser del" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "Kopier innledende data fra en annen del" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "Innledende lagerbeholdning" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "Lag en del med innledende lagermengde" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "Leverandøropplysninger" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "Legg til innledende leverandørinformasjon for denne delen" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "Kopier kategoriparametre" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" msgstr "Kopier parametermaler fra valgt delkategori" -#: part/serializers.py:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "Eksisterende bilde" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "Filnavn for et eksisterende del-bilde" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "Bildefilen finnes ikke" -#: part/serializers.py:1068 +#: part/serializers.py:1104 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:1078 +#: part/serializers.py:1114 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:1088 +#: part/serializers.py:1124 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:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "Ekskluder ekstern lagerbeholdning" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "Ekskluder lagervarer i eksterne lokasjoner" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "Generer rapport" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "Genererer rapport som inneholder beregnede lagerdata" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "Oppdater deler" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "Oppdater spesifiserte deler med beregnede lagerbeholdningsdata" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "Lagerbeholdningsfunksjonalitet er ikke aktivert" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "Overstyr beregnet verdi for minimumspris" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "Valuta for minstepris" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "Overstyr beregnet verdi for maksimal pris" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "Valuta for maksimal pris" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "Oppdater" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "Oppdater priser for denne delen" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, 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:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "Minsteprisen kan ikke være større enn maksimal pris" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "Maksimal pris kan ikke være mindre enn minstepris" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "Velg del å kopiere BOM fra" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "Fjern eksisterende data" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" msgstr "Fjern eksisterende BOM-artikler før kopiering" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "Inkluder arvede" -#: part/serializers.py:1647 +#: part/serializers.py:1693 msgid "Include BOM items which are inherited from templated parts" msgstr "Inkluder BOM-artikler som er arvet fra maldeler" -#: part/serializers.py:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "Hopp over ugyldige rader" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "Aktiver dette alternativet for å hoppe over ugyldige rader" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "Kopier erstatningsdeler" -#: part/serializers.py:1659 +#: part/serializers.py:1705 msgid "Copy substitute parts when duplicate BOM items" msgstr "Kopier erstatningsdeler når BOM-elementer dupliseres" -#: part/serializers.py:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "Nullstill eksisterende BOM" -#: part/serializers.py:1694 +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "Fjern eksisterende BOM-artikler før opplastning" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "Ingen del-kolonne angitt" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "Flere samsvarende deler funnet" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "Ingen samsvarende del funnet" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "Delen er ikke betegnet som en komponent" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "Antall ikke oppgitt" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "Ugyldig antall" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "Minst en BOM-artikkel kreves" @@ -7147,7 +7205,7 @@ 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 #: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/stock.js:2179 users/models.py:191 +#: templates/js/translated/stock.js:2215 users/models.py:191 msgid "Stocktake" msgstr "Lagertelling" @@ -7221,7 +7279,7 @@ msgid "Validate BOM" msgstr "Godkjenn BOM" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "Legg til BOM-artikkel" @@ -7405,7 +7463,7 @@ msgstr "Tildelt til produksjonsordrer" msgid "Allocated to Sales Orders" msgstr "Tildelt til Salgsordrer" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "Kan Produsere" @@ -7509,7 +7567,7 @@ msgstr "Varianter" #: templates/InvenTree/settings/sidebar.html:51 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 -#: templates/js/translated/stock.js:2033 templates/navbar.html:31 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 msgid "Stock" msgstr "Lagerbeholdning" @@ -7555,7 +7613,7 @@ msgstr "Rediger" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 -#: templates/js/translated/stock.js:2209 +#: templates/js/translated/stock.js:2245 msgid "Last Updated" msgstr "Sist oppdatert" @@ -7999,7 +8057,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:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "Liggende" @@ -8307,16 +8365,16 @@ msgstr "" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "Ingen gyldige objekter angitt for mal" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "Malfil '{template}' mangler eller eksisterer ikke" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "Testrapport" @@ -8336,103 +8394,111 @@ msgstr "Legal" msgid "Letter" msgstr "Letter" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "Malnavn" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "Rapportmalfil" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "Beskrivelse av rapportmal" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "Rapportrevisjonsnummer (øker automatisk)" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "Sidestørrelse for PDF-rapporter" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "Generer rapport i landskapsorientering" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "Mønster for å generere rapportfilnavn" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "Rapportmal er aktiver" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "Lagervare-søkefilter (kommaseparert liste over nøkkel=verdi-par)" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "Inkluder installerte tester" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "Inkluder testresultater for lagervarer installert i sammenstilt artikkel" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "Produksjonsfiltre" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "Produksjons-søkefilter (kommaseparert liste over nøkkel=verdi-par" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "Delfiltre" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "Del-søkefilter (kommaseparert liste over nøkkel=verdi-par" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "Innkjøpsordre-søkefilter" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "Salgsordre-søkefilter" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "Returordre-søkefilter" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" msgstr "Snutt" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "Rapportsnuttfil" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "Filbeskrivelse for snutt" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" msgstr "Ressurs" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "Rapportressursfil" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "Ressursfilbeskrivelse" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "spørringsfiltre for lagerplassering (kommadelt liste av nøkkel=verdi-par)" @@ -8499,12 +8565,12 @@ msgid "Test Results" msgstr "Testresultater" #: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1492 msgid "Test" msgstr "Test" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Result" msgstr "Resultat" @@ -8531,7 +8597,7 @@ msgstr "Installerte artikler" #: report/templates/report/inventree_test_report_base.html:168 #: stock/admin.py:162 templates/js/translated/stock.js:700 -#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110 msgid "Serial" msgstr "Serienummer" @@ -8615,7 +8681,7 @@ msgstr "Slett når oppbrukt" #: stock/admin.py:256 stock/models.py:886 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2193 users/models.py:113 +#: templates/js/translated/stock.js:2229 users/models.py:113 msgid "Expiry Date" msgstr "Utløpsdato" @@ -8713,7 +8779,7 @@ msgstr "Velg eier" 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:174 templates/js/translated/stock.js:2745 +#: stock/models.py:174 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "Ekstern" @@ -8722,7 +8788,7 @@ msgstr "Ekstern" msgid "This is an external stock location" msgstr "Dette er en ekstern lagerplassering" -#: stock/models.py:181 templates/js/translated/stock.js:2754 +#: stock/models.py:181 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "Plasseringstype" @@ -8739,7 +8805,7 @@ msgstr "De kan ikke gjøre denne plasseringen strukturell, da noen lagervarer al msgid "Stock items cannot be located into structural stock locations!" msgstr "Lagervarer kan ikke plasseres i strukturelle plasseringer!" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:290 msgid "Stock item cannot be created for virtual parts" msgstr "Lagervare kan ikke opprettes for virtuelle deler" @@ -8784,7 +8850,7 @@ msgstr "Velg en tilsvarende leverandørdel for denne lagervaren" msgid "Where is this stock item located?" msgstr "Hvor er denne lagervaren plassert?" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1351 msgid "Packaging this stock item is stored in" msgstr "Inpakningen denne lagervaren er lagret i" @@ -8796,7 +8862,7 @@ msgstr "Er denne artikkelen montert i en annen artikkel?" msgid "Serial number for this item" msgstr "Serienummer for denne artikkelen" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1334 msgid "Batch code for this stock item" msgstr "Batchkode for denne lagervaren" @@ -8873,7 +8939,7 @@ msgstr "Serienumre må være en liste over tall" msgid "Quantity does not match serial numbers" msgstr "Antallet stemmer ikke overens med serienumrene" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:529 msgid "Serial numbers already exist" msgstr "Seriernummer eksisterer allerede" @@ -8905,7 +8971,7 @@ msgstr "Lagervare er for tiden i produksjon" msgid "Serialized stock cannot be merged" msgstr "Serialisert lagerbeholdning kan ikke slås sammen" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1240 msgid "Duplicate stock items" msgstr "Duplisert lagervare" @@ -8929,207 +8995,236 @@ msgstr "Lagervare kan ikke flyttes fordi den ikke er på lager" msgid "Entry notes" msgstr "Oppføringsnotater" -#: stock/models.py:2399 +#: stock/models.py:2402 msgid "Value must be provided for this test" msgstr "Verdi må angis for denne testen" -#: stock/models.py:2405 +#: stock/models.py:2408 msgid "Attachment must be uploaded for this test" msgstr "Vedlegg må lastes opp for denne testen" -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Test result" msgstr "Testresultat" -#: stock/models.py:2439 +#: stock/models.py:2442 msgid "Test output value" msgstr "Testens verdi" -#: stock/models.py:2447 +#: stock/models.py:2450 msgid "Test result attachment" msgstr "Vedlegg til testresultat" -#: stock/models.py:2451 +#: stock/models.py:2454 msgid "Test notes" msgstr "Testnotater" -#: stock/serializers.py:96 +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "" + +#: stock/models.py:2463 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2469 +msgid "Started" +msgstr "" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:100 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:119 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 +#: stock/serializers.py:151 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:184 msgid "Serial number is too large" msgstr "Serienummeret er for høyt" -#: stock/serializers.py:267 +#: stock/serializers.py:282 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:380 +#: stock/serializers.py:402 msgid "Purchase price of this stock item, per unit or pack" msgstr "Innkjøpspris for denne lagervaren, per enhet eller forpakning" -#: stock/serializers.py:442 +#: stock/serializers.py:464 msgid "Enter number of stock items to serialize" msgstr "Angi antall lagervarer som skal serialiseres" -#: stock/serializers.py:455 +#: stock/serializers.py:477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "Antall kan ikke overstige tilgjengelig lagerbeholdning ({q})" -#: stock/serializers.py:462 +#: stock/serializers.py:484 msgid "Enter serial numbers for new items" msgstr "Angi serienummer for nye artikler" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 msgid "Destination stock location" msgstr "Til Lagerplassering" -#: stock/serializers.py:480 +#: stock/serializers.py:502 msgid "Optional note field" msgstr "Valgfritt notatfelt" -#: stock/serializers.py:490 +#: stock/serializers.py:512 msgid "Serial numbers cannot be assigned to this part" msgstr "Serienummer kan ikke tilordnes denne delen" -#: stock/serializers.py:545 +#: stock/serializers.py:567 msgid "Select stock item to install" msgstr "Velg lagervare å montere" -#: stock/serializers.py:552 +#: stock/serializers.py:574 msgid "Quantity to Install" msgstr "Antall å installere" -#: stock/serializers.py:553 +#: stock/serializers.py:575 msgid "Enter the quantity of items to install" msgstr "Angi antallet elementer som skal installeres" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 msgid "Add transaction note (optional)" msgstr "Legg til transaksjonsnotat (valgfritt)" -#: stock/serializers.py:566 +#: stock/serializers.py:588 msgid "Quantity to install must be at least 1" msgstr "Antall å installere må være minst 1" -#: stock/serializers.py:574 +#: stock/serializers.py:596 msgid "Stock item is unavailable" msgstr "Lagervaren er utilgjengelig" -#: stock/serializers.py:581 +#: stock/serializers.py:607 msgid "Selected part is not in the Bill of Materials" msgstr "Valgt del er ikke i stykklisten" -#: stock/serializers.py:593 +#: stock/serializers.py:620 msgid "Quantity to install must not exceed available quantity" msgstr "Antall å installere må ikke overskride tilgjengelig antall" -#: stock/serializers.py:628 +#: stock/serializers.py:655 msgid "Destination location for uninstalled item" msgstr "Lagerplassering for den avinstallerte artikkelen" -#: stock/serializers.py:663 +#: stock/serializers.py:690 msgid "Select part to convert stock item into" msgstr "Velg del å konvertere lagervare til" -#: stock/serializers.py:676 +#: stock/serializers.py:703 msgid "Selected part is not a valid option for conversion" msgstr "Valgt del er ikke et gyldig alternativ for konvertering" -#: stock/serializers.py:693 +#: stock/serializers.py:720 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "Kan ikke konvertere lagerprodukt med tildelt leverandørdel" -#: stock/serializers.py:724 +#: stock/serializers.py:751 msgid "Destination location for returned item" msgstr "Lagerplassering for returnert artikkel" -#: stock/serializers.py:761 +#: stock/serializers.py:788 msgid "Select stock items to change status" msgstr "Velg lagervarer for å endre status" -#: stock/serializers.py:767 +#: stock/serializers.py:794 msgid "No stock items selected" msgstr "Ingen lagervarer valgt" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Underplasseringer" -#: stock/serializers.py:1036 +#: stock/serializers.py:1069 msgid "Part must be salable" msgstr "Delen må være salgbar" -#: stock/serializers.py:1040 +#: stock/serializers.py:1073 msgid "Item is allocated to a sales order" msgstr "Artikkelen er tildelt en salgsordre" -#: stock/serializers.py:1044 +#: stock/serializers.py:1077 msgid "Item is allocated to a build order" msgstr "Artikkelen er tildelt en produksjonsordre" -#: stock/serializers.py:1068 +#: stock/serializers.py:1101 msgid "Customer to assign stock items" msgstr "Kunde å tilordne lagervarer" -#: stock/serializers.py:1074 +#: stock/serializers.py:1107 msgid "Selected company is not a customer" msgstr "Valgt firma er ikke en kunde" -#: stock/serializers.py:1082 +#: stock/serializers.py:1115 msgid "Stock assignment notes" msgstr "Lagervare-tildelignsnotater" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1125 stock/serializers.py:1379 msgid "A list of stock items must be provided" msgstr "En liste av lagervarer må oppgis" -#: stock/serializers.py:1171 +#: stock/serializers.py:1204 msgid "Stock merging notes" msgstr "Notater om lagersammenslåing" -#: stock/serializers.py:1176 +#: stock/serializers.py:1209 msgid "Allow mismatched suppliers" msgstr "Tillat forskjellige leverandører" -#: stock/serializers.py:1177 +#: stock/serializers.py:1210 msgid "Allow stock items with different supplier parts to be merged" msgstr "Tillat lagervarer med forskjellige leverandørdeler å slås sammen" -#: stock/serializers.py:1182 +#: stock/serializers.py:1215 msgid "Allow mismatched status" msgstr "Tillat forskjellig status" -#: stock/serializers.py:1183 +#: stock/serializers.py:1216 msgid "Allow stock items with different status codes to be merged" msgstr "Tillat lagervarer med forskjellige statuskoder å slås sammen" -#: stock/serializers.py:1193 +#: stock/serializers.py:1226 msgid "At least two stock items must be provided" msgstr "Minst to lagervarer må oppgis" -#: stock/serializers.py:1260 +#: stock/serializers.py:1293 msgid "No Change" msgstr "" -#: stock/serializers.py:1289 +#: stock/serializers.py:1322 msgid "StockItem primary key value" msgstr "Lagervare primærnøkkel verdi" -#: stock/serializers.py:1308 +#: stock/serializers.py:1341 msgid "Stock item status code" msgstr "Lagervare statuskode" -#: stock/serializers.py:1336 +#: stock/serializers.py:1369 msgid "Stock transaction notes" msgstr "Lager transaksjonsnotater" @@ -9154,7 +9249,7 @@ msgstr "Testdata" msgid "Test Report" msgstr "Testrapport" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 msgid "Delete Test Data" msgstr "Slett testdata" @@ -9170,15 +9265,15 @@ msgstr "Notater for lagervare" msgid "Installed Stock Items" msgstr "Installerte lagervarer" -#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 msgid "Install Stock Item" msgstr "Installer lagervare" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:274 msgid "Delete all test results for this stock item" msgstr "Slett alle testresultater for denne lagervaren" -#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 msgid "Add Test Result" msgstr "" @@ -9201,17 +9296,17 @@ msgid "Stock adjustment actions" msgstr "Lagerjusteringshandlinger" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 msgid "Count stock" msgstr "Tell beholdning" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:1803 msgid "Add stock" msgstr "Legg til lagerbeholdning" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1776 +#: templates/js/translated/stock.js:1812 msgid "Remove stock" msgstr "Fjern lagerbeholdning" @@ -9220,12 +9315,12 @@ msgid "Serialize stock" msgstr "Serialiser lager" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 msgid "Transfer stock" msgstr "Overfør lagerbeholdning" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1884 msgid "Assign to customer" msgstr "Tilordne til kunde" @@ -9364,7 +9459,7 @@ msgid "No stocktake performed" msgstr "Ingen lagertelling utført" #: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1915 +#: templates/js/translated/stock.js:1951 msgid "stock item" msgstr "" @@ -9469,7 +9564,7 @@ msgid "New Location" msgstr "Ny plassering" #: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2536 +#: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" @@ -10063,7 +10158,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:37 msgid "New Location Type" msgstr "Ny plasseringstype" @@ -10120,7 +10215,7 @@ msgstr "Innstillinger for salgsordre" msgid "Stock Settings" msgstr "Instillinger for lager" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:33 msgid "Stock Location Types" msgstr "Lagerplasseringstyper" @@ -10662,7 +10757,7 @@ msgid "The following parts are low on required stock" msgstr "Følgende deler har for lav lagerbeholdning" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "Antall som kreves" @@ -10676,7 +10771,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:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "Minimum antall" @@ -11051,62 +11146,66 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "" @@ -11389,7 +11488,7 @@ msgstr "" #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 -#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11401,7 +11500,7 @@ msgstr "" msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006 +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" @@ -11449,29 +11548,29 @@ msgstr "" msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "" @@ -11804,15 +11903,15 @@ msgstr "" msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3087 +#: templates/js/translated/forms.js:3103 msgid "Select Columns" msgstr "" @@ -12289,7 +12388,7 @@ msgid "No category" msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 -#: templates/js/translated/stock.js:2633 +#: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" @@ -12301,7 +12400,7 @@ msgstr "" msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" @@ -12313,64 +12412,64 @@ msgstr "" msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" @@ -12907,7 +13006,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1737 +#: templates/js/translated/stock.js:1773 msgid "Shipped to customer" msgstr "" @@ -13165,7 +13264,7 @@ msgstr "" msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" @@ -13189,248 +13288,256 @@ msgstr "" msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1440 +#: templates/js/translated/stock.js:1447 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1443 +#: templates/js/translated/stock.js:1450 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1466 +#: templates/js/translated/stock.js:1473 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1530 +#: templates/js/translated/stock.js:1537 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1677 +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1733 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1729 +#: templates/js/translated/stock.js:1765 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1769 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1741 +#: templates/js/translated/stock.js:1777 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1747 +#: templates/js/translated/stock.js:1783 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1839 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1848 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:1897 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1916 +#: templates/js/translated/stock.js:1952 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1921 +#: templates/js/translated/stock.js:1957 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1932 +#: templates/js/translated/stock.js:1968 msgid "Stock Actions" msgstr "" -#: templates/js/translated/stock.js:1976 +#: templates/js/translated/stock.js:2012 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2054 +#: templates/js/translated/stock.js:2090 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2059 +#: templates/js/translated/stock.js:2095 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2062 +#: templates/js/translated/stock.js:2098 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2065 +#: templates/js/translated/stock.js:2101 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2067 +#: templates/js/translated/stock.js:2103 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2069 +#: templates/js/translated/stock.js:2105 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2072 +#: templates/js/translated/stock.js:2108 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2074 +#: templates/js/translated/stock.js:2110 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2114 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2080 +#: templates/js/translated/stock.js:2116 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2085 +#: templates/js/translated/stock.js:2121 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2087 +#: templates/js/translated/stock.js:2123 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2089 +#: templates/js/translated/stock.js:2125 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2129 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2258 +#: templates/js/translated/stock.js:2294 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2305 +#: templates/js/translated/stock.js:2341 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2433 +#: templates/js/translated/stock.js:2469 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2573 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2692 +#: templates/js/translated/stock.js:2728 msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2810 +#: templates/js/translated/stock.js:2846 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2814 +#: templates/js/translated/stock.js:2850 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:2862 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2848 +#: templates/js/translated/stock.js:2884 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2865 +#: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2880 +#: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2897 +#: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2914 +#: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3005 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2977 +#: templates/js/translated/stock.js:3013 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:3049 +#: templates/js/translated/stock.js:3085 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139 +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:3161 +#: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:3182 +#: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:3183 +#: 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:3185 +#: 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:3186 +#: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:3187 +#: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:3188 +#: 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:3201 +#: templates/js/translated/stock.js:3237 msgid "Select part to install" msgstr "" -#: templates/js/translated/stock.js:3264 +#: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" msgstr "" -#: templates/js/translated/stock.js:3277 +#: templates/js/translated/stock.js:3313 msgid "Selected stock items" msgstr "" -#: templates/js/translated/stock.js:3281 +#: templates/js/translated/stock.js:3317 msgid "Change Stock Status" msgstr "" diff --git a/InvenTree/locale/pl/LC_MESSAGES/django.po b/InvenTree/locale/pl/LC_MESSAGES/django.po index 9e8ff1ccb7..ba14ebe5fe 100644 --- a/InvenTree/locale/pl/LC_MESSAGES/django.po +++ b/InvenTree/locale/pl/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 04:05+0000\n" -"PO-Revision-Date: 2024-02-28 07:23\n" +"POT-Creation-Date: 2024-03-19 01:26+0000\n" +"PO-Revision-Date: 2024-03-19 11:52\n" "Last-Translator: \n" "Language-Team: Polish\n" "Language: pl_PL\n" @@ -28,22 +28,22 @@ msgstr "Użytkownik nie ma uprawnień do przeglądania tego modelu" #: InvenTree/conversion.py:160 #, python-brace-format msgid "Invalid unit provided ({unit})" -msgstr "" +msgstr "Nieprawidłowa jednostka ({unit})" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "Nie podano wartości" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "Nie udało się przeliczyć {original} na {unit}" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" msgstr "Podano nieprawidłową ilość" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" msgstr "Niepoprawna ilość ({exc})" @@ -64,18 +64,18 @@ msgstr "Wprowadź dane" #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 #: templates/js/translated/return_order.js:776 #: templates/js/translated/sales_order.js:1067 #: templates/js/translated/sales_order.js:1982 -#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 msgid "Notes" msgstr "Uwagi" @@ -132,42 +132,42 @@ msgstr "Podany e-mail domeny nie został zatwierdzony." msgid "Registration is disabled." msgstr "Rejestracja jest wyłączona." -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "Podano nieprawidłową ilość" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "Pusty ciąg numeru seryjnego" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "Podwójny numer seryjny" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "Nieprawidłowy zakres grupy: {group}" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "Zakres grupy {group} przekracza dozwoloną ilość ({expected_quantity})" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "Nieprawidłowa kolejność grup: {group}" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "Nie znaleziono numerów seryjnych" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "Liczba unikalnych numerów seryjnych ({len(serials)}) musi odpowiadać ilości ({expected_quantity})" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "Usuń znaczniki HTML z tej wartości" @@ -203,131 +203,135 @@ msgstr "Zdalny serwer zwrócił pustą odpowiedź" msgid "Supplied URL is not a valid image file" msgstr "Podany adres URL nie jest poprawnym plikiem obrazu" -#: InvenTree/locales.py:16 +#: InvenTree/locales.py:18 msgid "Bulgarian" msgstr "bułgarski" -#: InvenTree/locales.py:17 +#: InvenTree/locales.py:19 msgid "Czech" msgstr "Czeski" -#: InvenTree/locales.py:18 +#: InvenTree/locales.py:20 msgid "Danish" msgstr "Duński" -#: InvenTree/locales.py:19 +#: InvenTree/locales.py:21 msgid "German" msgstr "Niemiecki" -#: InvenTree/locales.py:20 +#: InvenTree/locales.py:22 msgid "Greek" msgstr "Grecki" -#: InvenTree/locales.py:21 +#: InvenTree/locales.py:23 msgid "English" msgstr "Angielski" -#: InvenTree/locales.py:22 +#: InvenTree/locales.py:24 msgid "Spanish" msgstr "Hiszpański" -#: InvenTree/locales.py:23 +#: InvenTree/locales.py:25 msgid "Spanish (Mexican)" msgstr "Hiszpański (Meksyk)" -#: InvenTree/locales.py:24 +#: InvenTree/locales.py:26 msgid "Farsi / Persian" msgstr "Perski" -#: InvenTree/locales.py:25 +#: InvenTree/locales.py:27 msgid "Finnish" msgstr "fiński" -#: InvenTree/locales.py:26 +#: InvenTree/locales.py:28 msgid "French" msgstr "Francuski" -#: InvenTree/locales.py:27 +#: InvenTree/locales.py:29 msgid "Hebrew" msgstr "Hebrajski" -#: InvenTree/locales.py:28 +#: InvenTree/locales.py:30 msgid "Hindi" msgstr "hinduski" -#: InvenTree/locales.py:29 +#: InvenTree/locales.py:31 msgid "Hungarian" msgstr "Węgierski" -#: InvenTree/locales.py:30 +#: InvenTree/locales.py:32 msgid "Italian" msgstr "Włoski" -#: InvenTree/locales.py:31 +#: InvenTree/locales.py:33 msgid "Japanese" msgstr "Japoński" -#: InvenTree/locales.py:32 +#: InvenTree/locales.py:34 msgid "Korean" msgstr "Koreański" -#: InvenTree/locales.py:33 +#: InvenTree/locales.py:35 +msgid "Latvian" +msgstr "" + +#: InvenTree/locales.py:36 msgid "Dutch" msgstr "Holenderski" -#: InvenTree/locales.py:34 +#: InvenTree/locales.py:37 msgid "Norwegian" msgstr "Norweski" -#: InvenTree/locales.py:35 +#: InvenTree/locales.py:38 msgid "Polish" msgstr "Polski" -#: InvenTree/locales.py:36 +#: InvenTree/locales.py:39 msgid "Portuguese" msgstr "Portugalski" -#: InvenTree/locales.py:37 +#: InvenTree/locales.py:40 msgid "Portuguese (Brazilian)" msgstr "Portugalski (Brazylijski)" -#: InvenTree/locales.py:38 +#: InvenTree/locales.py:41 msgid "Russian" msgstr "Rosyjski" -#: InvenTree/locales.py:39 +#: InvenTree/locales.py:42 msgid "Slovak" msgstr "Słowacki" -#: InvenTree/locales.py:40 +#: InvenTree/locales.py:43 msgid "Slovenian" msgstr "Słoweński" -#: InvenTree/locales.py:41 +#: InvenTree/locales.py:44 msgid "Serbian" msgstr "serbski" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:45 msgid "Swedish" msgstr "Szwedzki" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:46 msgid "Thai" msgstr "Tajski" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:47 msgid "Turkish" msgstr "Turecki" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:48 msgid "Vietnamese" msgstr "Wietnamski" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:49 msgid "Chinese (Simplified)" msgstr "chiński (uproszczony)" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:50 msgid "Chinese (Traditional)" msgstr "chiński (tradycyjny)" @@ -391,7 +395,7 @@ msgstr "Brak pliku" msgid "Missing external link" msgstr "Brak zewnętrznego odnośnika" -#: InvenTree/models.py:559 stock/models.py:2446 +#: InvenTree/models.py:559 stock/models.py:2449 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -401,7 +405,7 @@ msgstr "Załącznik" msgid "Select file to attach" msgstr "Wybierz plik do załączenia" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -432,13 +436,13 @@ msgstr "Komentarz" msgid "File comment" msgstr "Komentarz pliku" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:3000 users/models.py:100 +#: templates/js/translated/stock.js:3036 users/models.py:100 msgid "User" msgstr "Użytkownik" @@ -479,10 +483,10 @@ msgstr "Duplikaty nazw nie mogą istnieć pod tym samym rodzicem" msgid "Invalid choice" msgstr "Błędny wybór" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -495,7 +499,7 @@ msgstr "Błędny wybór" #: templates/js/translated/company.js:1155 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Nazwa" @@ -506,10 +510,10 @@ msgstr "Nazwa" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -523,7 +527,7 @@ msgstr "Nazwa" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -531,8 +535,8 @@ msgstr "Nazwa" #: templates/js/translated/return_order.js:314 #: templates/js/translated/sales_order.js:802 #: templates/js/translated/sales_order.js:1812 -#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021 -#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "Opis" @@ -545,7 +549,7 @@ msgid "parent" msgstr "nadrzędny" #: InvenTree/models.py:916 templates/js/translated/part.js:2794 -#: templates/js/translated/stock.js:2721 +#: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Ścieżka" @@ -581,7 +585,7 @@ msgstr "Błąd serwera" msgid "An error has been logged by the server." msgstr "Błąd został zapisany w logach serwera." -#: InvenTree/serializers.py:62 part/models.py:4134 +#: InvenTree/serializers.py:62 part/models.py:4143 msgid "Must be a valid number" msgstr "Numer musi być prawidłowy" @@ -596,89 +600,89 @@ msgstr "Waluta" msgid "Select currency from available options" msgstr "Wybierz walutę z dostępnych opcji" -#: InvenTree/serializers.py:436 +#: InvenTree/serializers.py:441 msgid "You do not have permission to change this user role." msgstr "Nie masz uprawnień do zmiany tej roli użytkownika." -#: InvenTree/serializers.py:448 +#: InvenTree/serializers.py:453 msgid "Only superusers can create new users" msgstr "Tylko superużytkownicy mogą tworzyć nowych użytkowników" -#: InvenTree/serializers.py:467 +#: InvenTree/serializers.py:472 msgid "Your account has been created." msgstr "Twoje konto zostało utworzone." -#: InvenTree/serializers.py:469 +#: InvenTree/serializers.py:474 msgid "Please use the password reset function to login" msgstr "Zresetuj hasło" -#: InvenTree/serializers.py:476 +#: InvenTree/serializers.py:481 msgid "Welcome to InvenTree" msgstr "Witamy w InvenTree" -#: InvenTree/serializers.py:537 +#: InvenTree/serializers.py:542 msgid "Filename" msgstr "Nazwa pliku" -#: InvenTree/serializers.py:571 +#: InvenTree/serializers.py:576 msgid "Invalid value" msgstr "Nieprawidłowa wartość" -#: InvenTree/serializers.py:591 +#: InvenTree/serializers.py:596 msgid "Data File" msgstr "Plik danych" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:597 msgid "Select data file for upload" msgstr "Wybierz plik danych do przesłania" -#: InvenTree/serializers.py:609 +#: InvenTree/serializers.py:614 msgid "Unsupported file type" msgstr "Nieobsługiwany typ pliku" -#: InvenTree/serializers.py:615 +#: InvenTree/serializers.py:620 msgid "File is too large" msgstr "Plik jest zbyt duży" -#: InvenTree/serializers.py:636 +#: InvenTree/serializers.py:641 msgid "No columns found in file" msgstr "Nie znaleziono kolumn w pliku" -#: InvenTree/serializers.py:639 +#: InvenTree/serializers.py:644 msgid "No data rows found in file" msgstr "Nie znaleziono wierszy danych w pliku" -#: InvenTree/serializers.py:752 +#: InvenTree/serializers.py:757 msgid "No data rows provided" msgstr "Nie podano wierszy danych" -#: InvenTree/serializers.py:755 +#: InvenTree/serializers.py:760 msgid "No data columns supplied" msgstr "Nie podano kolumn danych" -#: InvenTree/serializers.py:822 +#: InvenTree/serializers.py:827 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Brakuje wymaganej kolumny: '{name}'" -#: InvenTree/serializers.py:831 +#: InvenTree/serializers.py:836 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Zduplikowana kolumna: '{col}'" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:859 msgid "Remote Image" msgstr "Obrazek zewnętrzny" -#: InvenTree/serializers.py:855 +#: InvenTree/serializers.py:860 msgid "URL of remote image file" msgstr "Adres URL zdalnego pliku obrazu" -#: InvenTree/serializers.py:873 +#: InvenTree/serializers.py:878 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:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "Sprawdzenie robotnika w tle nie powiodło się" @@ -818,7 +822,7 @@ msgstr "Podziel z pozycji nadrzędnej" msgid "Split child item" msgstr "Podziel element podrzędny" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 msgid "Merged stock items" msgstr "Scalone przedmioty magazynowe" @@ -838,7 +842,7 @@ msgstr "Dane wyjściowe kolejności kompilacji ukończone" msgid "Build order output rejected" msgstr "Odrzucono wynik zlecenia produkcji" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 msgid "Consumed by build order" msgstr "Zużyte przez kolejność kompilacji" @@ -938,14 +942,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:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "Materiał eksploatacyjny" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -960,7 +964,7 @@ msgid "Tracked" msgstr "Śledzony" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -985,7 +989,7 @@ msgstr "Dostępne" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "Zlecenie Budowy" @@ -1014,7 +1018,7 @@ msgstr "Odwołanie do zamówienia wykonania" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1044,11 +1048,11 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana" #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1059,7 +1063,7 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:267 stock/serializers.py:689 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1086,9 +1090,9 @@ msgstr "Zamówienie budowy, do którego budowa jest przypisana" #: templates/js/translated/sales_order.js:1598 #: templates/js/translated/sales_order.js:1796 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960 -#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054 -#: templates/js/translated/stock.js:3200 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 msgid "Part" msgstr "Komponent" @@ -1146,8 +1150,8 @@ msgstr "Status budowania" msgid "Build status code" msgstr "Kod statusu budowania" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Kod partii" @@ -1242,53 +1246,53 @@ msgstr "Kod projektu" msgid "Project code for this build order" msgstr "Kod projektu dla tego zlecenia produkcji" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Kolejność kompilacji {build} została zakończona" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "Kolejność kompilacji została zakończona" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "Nie określono danych wyjściowych budowy" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "Budowanie wyjścia jest już ukończone" -#: build/models.py:789 +#: build/models.py:805 msgid "Build output does not match Build Order" msgstr "Skompilowane dane wyjściowe nie pasują do kolejności kompilacji" -#: build/models.py:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 msgid "Quantity must be greater than zero" msgstr "Ilość musi być większa niż zero" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 msgid "Quantity cannot be greater than the output quantity" msgstr "Ilość nie może być większa niż ilość wyjściowa" -#: build/models.py:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" -msgstr "" +msgstr "Wyjście budowy {serial} nie przeszło wszystkich testów" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" -msgstr "" +msgstr "Zbuduj obiekt" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1298,7 +1302,7 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:463 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1310,7 +1314,7 @@ msgstr "" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1325,43 +1329,43 @@ msgstr "" #: templates/js/translated/sales_order.js:1698 #: templates/js/translated/sales_order.js:1824 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 -#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985 -#: templates/js/translated/stock.js:3068 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "Ilość" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" msgstr "Wymagana ilość dla zlecenia produkcji" -#: build/models.py:1381 +#: build/models.py:1397 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1390 +#: build/models.py:1406 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" -msgstr "" +msgstr "Pozycja magazynowa jest nadmiernie przydzielona" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "Alokowana ilość musi być większa niż zero" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" -msgstr "" +msgstr "Ilość musi wynosić 1 dla serializowanych zasobów" -#: build/models.py:1473 +#: build/models.py:1489 msgid "Selected stock item does not match BOM line" -msgstr "" +msgstr "Wybrana pozycja magazynowa nie pasuje do pozycji w zestawieniu BOM" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 @@ -1372,23 +1376,23 @@ msgstr "" #: templates/js/translated/sales_order.js:1605 #: templates/js/translated/sales_order.js:1692 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 -#: templates/js/translated/stock.js:2941 +#: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "Element magazynowy" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "Lokalizacja magazynowania przedmiotu" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" -msgstr "" +msgstr "Ilość zapasów do przydzielenia do produkcji" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "Zainstaluj do" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "Docelowa lokalizacja magazynowa przedmiotu" @@ -1425,8 +1429,8 @@ msgstr "" msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 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" @@ -1451,10 +1455,10 @@ msgstr "Poniższe numery seryjne już istnieją lub są nieprawidłowe" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1466,8 +1470,8 @@ msgstr "" #: templates/js/translated/sales_order.js:1627 #: templates/js/translated/sales_order.js:1706 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164 -#: templates/js/translated/stock.js:2835 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 msgid "Location" msgstr "Lokalizacja" @@ -1493,22 +1497,22 @@ msgstr "" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 #: templates/js/translated/purchase_order.js:1723 #: templates/js/translated/return_order.js:331 #: templates/js/translated/sales_order.js:819 -#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959 -#: templates/js/translated/stock.js:3084 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 msgid "Status" msgstr "Status" #: build/serializers.py:511 msgid "Accept Incomplete Allocation" -msgstr "" +msgstr "Zaakceptuj niekompletną alokację" #: build/serializers.py:512 msgid "Complete outputs if stock has not been fully allocated" @@ -1566,7 +1570,7 @@ msgstr "" msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "Akceptuj niekompletne" @@ -1602,11 +1606,11 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1065 msgid "Item must be in stock" msgstr "Towar musi znajdować się w magazynie" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" @@ -1619,7 +1623,7 @@ msgstr "" msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "" @@ -1659,44 +1663,45 @@ msgstr "Przedmiot opcjonalny" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 #: stock/api.py:745 msgid "BOM Item" msgstr "Element BOM" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "W Zamówieniu" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" -msgstr "" +msgstr "W produkcji" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "Dostępna ilość" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1739,7 +1744,7 @@ msgstr "Pokaż Kod QR" #: templates/js/translated/barcode.js:496 #: templates/js/translated/barcode.js:501 msgid "Unlink Barcode" -msgstr "" +msgstr "Odłącz Kod Kreskowy" #: build/templates/build/build_base.html:47 #: company/templates/company/supplier_part.html:43 @@ -1750,7 +1755,7 @@ msgstr "" #: stock/templates/stock/item_base.html:49 #: stock/templates/stock/location.html:61 msgid "Link Barcode" -msgstr "" +msgstr "Połącz Kod Kreskowy" #: build/templates/build/build_base.html:56 #: order/templates/order/order_base.html:46 @@ -1862,7 +1867,7 @@ msgstr "" #: templates/js/translated/pricing.js:929 #: templates/js/translated/sales_order.js:769 #: templates/js/translated/sales_order.js:992 -#: templates/js/translated/stock.js:2888 +#: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "Zamówienie zakupu" @@ -1920,8 +1925,8 @@ msgstr "" #: templates/js/translated/build.js:1377 #: templates/js/translated/model_renderers.js:235 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153 -#: templates/js/translated/stock.js:3091 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" @@ -1990,27 +1995,31 @@ msgstr "Zamów wymagane komponenty" msgid "Order Parts" msgstr "Zamów komponent" -#: build/templates/build/detail.html:210 -msgid "Incomplete Build Outputs" -msgstr "" - -#: build/templates/build/detail.html:214 -msgid "Create new build output" +#: 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:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2026,15 +2035,15 @@ msgstr "" msgid "Attachments" msgstr "Załączniki" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "Notatki tworzenia" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" msgstr "" @@ -2112,1390 +2121,1414 @@ msgstr "Opis projektu" msgid "User or group responsible for this project" msgstr "Użytkownik lub grupa odpowiedzialna za to zamówienie" -#: common/models.py:737 +#: common/models.py:744 msgid "Settings key (must be unique - case insensitive)" msgstr "Klucz ustawień (musi być unikalny - niewrażliwy na wielkość liter)" -#: common/models.py:741 +#: common/models.py:748 msgid "Settings value" msgstr "Ustawienia wartości" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "Wybrana wartość nie jest poprawną opcją" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "Wartość musi być wartością binarną" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "Wartość musi być liczbą całkowitą" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "Ciąg musi być unikatowy" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "Brak grupy" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "Pusta domena nie jest dozwolona." -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "Niepoprawna nazwa domeny: {domain}" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "Brak wtyczki" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "Wymagane ponowne uruchomienie" -#: common/models.py:1231 +#: common/models.py:1238 msgid "A setting has been changed which requires a server restart" msgstr "Zmieniono ustawienie, które wymaga restartu serwera" -#: common/models.py:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "Oczekujące migracje" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "Liczba oczekujących migracji bazy danych" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "Nazwa instancji serwera" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "Użyj nazwy instancji" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "Nazwa firmy" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "Wewnętrzna nazwa firmy" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "Bazowy URL" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "Bazowy adres URL dla instancji serwera" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "Domyślna waluta" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "Interwał aktualizacji waluty" -#: common/models.py:1283 +#: common/models.py:1290 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:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "dni" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "Wtyczka aktualizacji waluty" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "Pobierz z adresu URL" -#: common/models.py:1298 +#: common/models.py:1305 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:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "Limit rozmiaru pobierania" -#: common/models.py:1305 +#: common/models.py:1312 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "Ścisła weryfikacja adresu URL" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "Wymagaj specyfikacji schematu podczas sprawdzania poprawności adresów URL" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "Wymagaj potwierdzenia" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "Wymagaj wyraźnego potwierdzenia dla określonych działań." -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "Głębokość drzewa" -#: common/models.py:1332 +#: common/models.py:1339 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:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "Częstotliwość sprawdzania aktualizacji" -#: common/models.py:1339 +#: common/models.py:1346 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:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "Automatyczna kopia zapasowa" -#: common/models.py:1346 +#: common/models.py:1353 msgid "Enable automatic backup of database and media files" msgstr "Włącz automatyczną kopię zapasową bazy danych i plików multimedialnych" -#: common/models.py:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "Interwał automatycznego tworzenia kopii zapasowych" -#: common/models.py:1352 +#: common/models.py:1359 msgid "Specify number of days between automated backup events" msgstr "Określ liczbę dni między zdarzeniami automatycznej kopii zapasowej" -#: common/models.py:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "Interwał usuwania zadań" -#: common/models.py:1360 +#: common/models.py:1367 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1369 +#: common/models.py:1376 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1378 +#: common/models.py:1385 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Obsługa kodu kreskowego" -#: common/models.py:1386 +#: common/models.py:1393 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1399 +#: common/models.py:1406 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "Wyrażenie regularne IPN" -#: common/models.py:1411 +#: common/models.py:1418 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "Zezwól na powtarzający się IPN" -#: common/models.py:1415 +#: common/models.py:1422 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "Zezwól na edycję IPN" -#: common/models.py:1421 +#: common/models.py:1428 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "Skopiuj BOM komponentu" -#: common/models.py:1427 +#: common/models.py:1434 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1433 +#: common/models.py:1440 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1439 +#: common/models.py:1446 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "Szablon" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "Komponent" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "Możliwość zakupu" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "Części są domyślnie z możliwością zakupu" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "Możliwość sprzedaży" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "Części są domyślnie z możliwością sprzedaży" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "Części są domyślnie z możliwością śledzenia" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "Części są domyślnie wirtualne" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1505 +#: common/models.py:1512 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1512 +#: common/models.py:1519 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "" -#: common/models.py:1525 +#: common/models.py:1532 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1526 +#: common/models.py:1533 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1530 +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1532 +#: common/models.py:1539 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1540 +#: common/models.py:1547 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1548 +#: common/models.py:1555 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1564 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1580 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1588 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1595 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1603 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "Ceny wewnętrzne" -#: common/models.py:1611 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1618 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "Włącz drukowanie etykiet" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "Włącz drukowanie etykiet z interfejsu WWW" -#: common/models.py:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "DPI etykiety" -#: common/models.py:1632 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "Włącz raporty" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "Tryb Debugowania" -#: common/models.py:1645 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: 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:202 msgid "Page Size" msgstr "Rozmiar strony" -#: common/models.py:1651 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "Domyślna wielkość strony dla raportów PDF" -#: common/models.py:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1657 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "Włącz generowanie raportów testów" -#: common/models.py:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1664 +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1671 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1677 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1692 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1704 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1711 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1719 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1725 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1731 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1736 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1741 +#: 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 "Build Order Reference Pattern" msgstr "" -#: common/models.py:1743 +#: common/models.py:1764 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1757 +#: common/models.py:1778 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1765 +#: common/models.py:1786 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1773 +#: common/models.py:1794 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1780 +#: common/models.py:1801 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1787 +#: common/models.py:1808 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1795 +#: common/models.py:1816 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1803 +#: common/models.py:1824 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "Automatycznie wypełniaj zlecenia zakupu" -#: common/models.py:1811 +#: common/models.py:1832 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:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "Włącz opcję zapomnianego hasła" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" msgstr "Włącz funkcję zapomnianego hasła na stronach logowania" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "Włącz rejestrację" -#: common/models.py:1825 +#: common/models.py:1846 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:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "Włącz SSO" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "Włącz SSO na stronach logowania" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1838 +#: common/models.py:1859 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1844 +#: common/models.py:1865 msgid "Email required" msgstr "Adres e-mail jest wymagany" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "Autouzupełnianie użytkowników SSO" -#: common/models.py:1852 +#: common/models.py:1873 msgid "Automatically fill out user-details from SSO account-data" msgstr "Automatycznie wypełnij dane użytkownika z danych konta SSO" -#: common/models.py:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "E-mail dwa razy" -#: common/models.py:1859 +#: common/models.py:1880 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:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "Hasło dwukrotnie" -#: common/models.py:1865 +#: common/models.py:1886 msgid "On signup ask users twice for their password" msgstr "Przy rejestracji dwukrotnie zapytaj użytkowników o ich hasło" -#: common/models.py:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "Grupuj przy rejestracji" -#: common/models.py:1879 +#: common/models.py:1900 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "Wymuś MFA" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "Użytkownicy muszą używać zabezpieczeń wieloskładnikowych." -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "Sprawdź wtyczki przy starcie" -#: common/models.py:1892 +#: common/models.py:1913 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "Włącz integrację URL" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "Włącz wtyczki, aby dodać ścieżki URL" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "Włącz integrację z aplikacją" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "Włącz wtyczki, aby dodać aplikacje" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1929 +#: common/models.py:1950 msgid "Enable plugins to run scheduled tasks" msgstr "Włącz wtyczki, aby uruchamiać zaplanowane zadania" -#: common/models.py:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "" -#: common/models.py:1936 +#: common/models.py:1957 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1950 +#: common/models.py:1971 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1958 +#: common/models.py:1979 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1966 +#: common/models.py:1987 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1974 +#: common/models.py:1995 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2029 common/models.py:2429 msgid "Settings key (must be unique - case insensitive" msgstr "Klucz ustawień (musi być unikalny - niewrażliwy na wielkość liter" -#: common/models.py:2043 +#: common/models.py:2070 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2045 +#: common/models.py:2072 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2051 +#: common/models.py:2078 msgid "Show subscribed parts" msgstr "Pokaż obserwowane części" -#: common/models.py:2052 +#: common/models.py:2079 msgid "Show subscribed parts on the homepage" msgstr "Pokaż obserwowane części na stronie głównej" -#: common/models.py:2057 +#: common/models.py:2084 msgid "Show subscribed categories" msgstr "Pokaż obserwowane kategorie" -#: common/models.py:2058 +#: common/models.py:2085 msgid "Show subscribed part categories on the homepage" msgstr "Pokaż obserwowane kategorie części na stronie głównej" -#: common/models.py:2063 +#: common/models.py:2090 msgid "Show latest parts" msgstr "Pokaż najnowsze części" -#: common/models.py:2064 +#: common/models.py:2091 msgid "Show latest parts on the homepage" msgstr "Pokaż najnowsze części na stronie głównej" -#: common/models.py:2069 +#: common/models.py:2096 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2070 +#: common/models.py:2097 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2075 +#: common/models.py:2102 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2076 +#: common/models.py:2103 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2081 +#: common/models.py:2108 msgid "Show low stock" msgstr "Pokaż niski stan magazynowy" -#: common/models.py:2082 +#: common/models.py:2109 msgid "Show low stock items on the homepage" msgstr "Pokaż elementy o niskim stanie na stronie głównej" -#: common/models.py:2087 +#: common/models.py:2114 msgid "Show depleted stock" msgstr "" -#: common/models.py:2088 +#: common/models.py:2115 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2093 +#: common/models.py:2120 msgid "Show needed stock" msgstr "Pokaż wymagany stan zapasów" -#: common/models.py:2094 +#: common/models.py:2121 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2099 +#: common/models.py:2126 msgid "Show expired stock" msgstr "" -#: common/models.py:2100 +#: common/models.py:2127 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2105 +#: common/models.py:2132 msgid "Show stale stock" msgstr "" -#: common/models.py:2106 +#: common/models.py:2133 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2111 +#: common/models.py:2138 msgid "Show pending builds" msgstr "" -#: common/models.py:2112 +#: common/models.py:2139 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2117 +#: common/models.py:2144 msgid "Show overdue builds" msgstr "" -#: common/models.py:2118 +#: common/models.py:2145 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2123 +#: common/models.py:2150 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2124 +#: common/models.py:2151 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2129 +#: common/models.py:2156 msgid "Show overdue POs" msgstr "" -#: common/models.py:2130 +#: common/models.py:2157 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2135 +#: common/models.py:2162 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2136 +#: common/models.py:2163 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2141 +#: common/models.py:2168 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2142 +#: common/models.py:2169 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2147 +#: common/models.py:2174 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2148 +#: common/models.py:2175 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2153 +#: common/models.py:2180 msgid "Show News" msgstr "" -#: common/models.py:2154 +#: common/models.py:2181 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2159 +#: common/models.py:2186 msgid "Inline label display" msgstr "" -#: common/models.py:2161 +#: common/models.py:2188 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2167 +#: common/models.py:2194 msgid "Default label printer" msgstr "" -#: common/models.py:2169 +#: common/models.py:2196 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2175 +#: common/models.py:2202 msgid "Inline report display" msgstr "" -#: common/models.py:2177 +#: common/models.py:2204 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2183 +#: common/models.py:2210 msgid "Search Parts" msgstr "Szukaj części" -#: common/models.py:2184 +#: common/models.py:2211 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2189 +#: common/models.py:2216 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2190 +#: common/models.py:2217 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2195 +#: common/models.py:2222 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2196 +#: common/models.py:2223 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2201 +#: common/models.py:2228 msgid "Hide Inactive Parts" msgstr "Ukryj nieaktywne części" -#: common/models.py:2202 +#: common/models.py:2229 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2207 +#: common/models.py:2234 msgid "Search Categories" msgstr "" -#: common/models.py:2208 +#: common/models.py:2235 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2213 +#: common/models.py:2240 msgid "Search Stock" msgstr "" -#: common/models.py:2214 +#: common/models.py:2241 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2219 +#: common/models.py:2246 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2221 +#: common/models.py:2248 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2227 +#: common/models.py:2254 msgid "Search Locations" msgstr "" -#: common/models.py:2228 +#: common/models.py:2255 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2233 +#: common/models.py:2260 msgid "Search Companies" msgstr "" -#: common/models.py:2234 +#: common/models.py:2261 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2239 +#: common/models.py:2266 msgid "Search Build Orders" msgstr "" -#: common/models.py:2240 +#: common/models.py:2267 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2245 +#: common/models.py:2272 msgid "Search Purchase Orders" msgstr "Wyszukaj zlecenia zakupu" -#: common/models.py:2246 +#: common/models.py:2273 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2251 +#: common/models.py:2278 msgid "Exclude Inactive Purchase Orders" msgstr "Wyklucz nieaktywne zlecenia zakupu" -#: common/models.py:2253 +#: common/models.py:2280 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2259 +#: common/models.py:2286 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2260 +#: common/models.py:2287 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2265 +#: common/models.py:2292 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2267 +#: common/models.py:2294 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2273 +#: common/models.py:2300 msgid "Search Return Orders" msgstr "" -#: common/models.py:2274 +#: common/models.py:2301 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2279 +#: common/models.py:2306 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2281 +#: common/models.py:2308 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2287 +#: common/models.py:2314 msgid "Search Preview Results" msgstr "" -#: common/models.py:2289 +#: common/models.py:2316 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2295 +#: common/models.py:2322 msgid "Regex Search" msgstr "" -#: common/models.py:2296 +#: common/models.py:2323 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2301 +#: common/models.py:2328 msgid "Whole Word Search" msgstr "" -#: common/models.py:2302 +#: common/models.py:2329 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2307 +#: common/models.py:2334 msgid "Show Quantity in Forms" msgstr "Pokaż ilość w formularzach" -#: common/models.py:2308 +#: common/models.py:2335 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2313 +#: common/models.py:2340 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2314 +#: common/models.py:2341 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2319 +#: common/models.py:2346 msgid "Fixed Navbar" msgstr "Stały pasek nawigacyjny" -#: common/models.py:2320 +#: common/models.py:2347 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2325 +#: common/models.py:2352 msgid "Date Format" msgstr "Format daty" -#: common/models.py:2326 +#: common/models.py:2353 msgid "Preferred format for displaying dates" msgstr "Preferowany format wyświetlania dat" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2366 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Planowanie komponentów" -#: common/models.py:2340 +#: common/models.py:2367 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2372 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2347 +#: common/models.py:2374 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2353 +#: common/models.py:2380 msgid "Table String Length" msgstr "" -#: common/models.py:2355 +#: common/models.py:2382 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2361 +#: common/models.py:2388 msgid "Default part label template" msgstr "" -#: common/models.py:2362 +#: common/models.py:2389 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2367 +#: common/models.py:2394 msgid "Default stock item template" msgstr "" -#: common/models.py:2369 +#: common/models.py:2396 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2375 +#: common/models.py:2402 msgid "Default stock location label template" msgstr "" -#: common/models.py:2377 +#: common/models.py:2404 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2383 +#: common/models.py:2410 msgid "Receive error reports" msgstr "" -#: common/models.py:2384 +#: common/models.py:2411 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2389 +#: common/models.py:2416 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2417 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2460 msgid "Price break quantity" msgstr "" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3503,23 +3536,23 @@ msgstr "" msgid "Price" msgstr "Cena" -#: common/models.py:2441 +#: common/models.py:2468 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2639 common/models.py:2824 msgid "Endpoint" msgstr "Punkt końcowy" -#: common/models.py:2613 +#: common/models.py:2640 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2623 +#: common/models.py:2650 msgid "Name for this webhook" msgstr "" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3529,101 +3562,101 @@ msgstr "" msgid "Active" msgstr "Aktywny" -#: common/models.py:2627 +#: common/models.py:2654 msgid "Is this webhook active" msgstr "" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2670 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2644 +#: common/models.py:2671 msgid "Token for access" msgstr "" -#: common/models.py:2652 +#: common/models.py:2679 msgid "Secret" msgstr "Sekret" -#: common/models.py:2653 +#: common/models.py:2680 msgid "Shared secret for HMAC" msgstr "Współdzielony sekret dla HMAC" -#: common/models.py:2761 +#: common/models.py:2788 msgid "Message ID" msgstr "Id wiadomości" -#: common/models.py:2762 +#: common/models.py:2789 msgid "Unique identifier for this message" msgstr "Unikalny identyfikator dla tej wiadomości" -#: common/models.py:2770 +#: common/models.py:2797 msgid "Host" msgstr "" -#: common/models.py:2771 +#: common/models.py:2798 msgid "Host from which this message was received" msgstr "Host, od którego otrzymano tę wiadomość" -#: common/models.py:2779 +#: common/models.py:2806 msgid "Header" msgstr "Nagłówek" -#: common/models.py:2780 +#: common/models.py:2807 msgid "Header of this message" msgstr "Nagłówek tej wiadomości" -#: common/models.py:2787 +#: common/models.py:2814 msgid "Body" msgstr "Zawartość" -#: common/models.py:2788 +#: common/models.py:2815 msgid "Body of this message" msgstr "" -#: common/models.py:2798 +#: common/models.py:2825 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2803 +#: common/models.py:2830 msgid "Worked on" msgstr "" -#: common/models.py:2804 +#: common/models.py:2831 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2930 +#: common/models.py:2957 msgid "Id" msgstr "" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2959 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2963 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2965 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2967 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Read" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Was this news item read?" msgstr "" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2987 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3633,31 +3666,31 @@ msgstr "" msgid "Image" msgstr "Obraz" -#: common/models.py:2960 +#: common/models.py:2987 msgid "Image file" msgstr "" -#: common/models.py:3002 +#: common/models.py:3029 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3021 +#: common/models.py:3048 msgid "Unit name" msgstr "" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3029 +#: common/models.py:3056 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3037 +#: common/models.py:3064 msgid "Unit definition" msgstr "" @@ -3961,7 +3994,7 @@ msgid "Link to address information (external)" msgstr "" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Część bazowa" @@ -3972,7 +4005,7 @@ msgstr "Wybierz część" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3987,7 +4020,7 @@ msgid "Select manufacturer" msgstr "Wybierz producenta" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4022,9 +4055,9 @@ msgstr "" #: company/models.py:615 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2438 templates/js/translated/company.js:1156 +#: stock/models.py:2441 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1519 msgid "Value" msgstr "Wartość" @@ -4033,7 +4066,7 @@ msgid "Parameter value" msgstr "" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4059,7 +4092,7 @@ msgstr "" #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4076,7 +4109,7 @@ msgstr "Dostawca" msgid "Select supplier" msgstr "Wybierz dostawcę" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "" @@ -4093,13 +4126,13 @@ msgid "Supplier part description" msgstr "" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:579 msgid "Note" msgstr "Uwaga" @@ -4112,10 +4145,10 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 -#: templates/js/translated/stock.js:2387 +#: templates/js/translated/stock.js:2423 msgid "Packaging" msgstr "Opakowanie" @@ -4157,7 +4190,7 @@ msgstr "" msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "Domyślna waluta używana dla tego dostawcy" @@ -4218,13 +4251,13 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1100 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 #: templates/js/translated/return_order.js:296 #: templates/js/translated/sales_order.js:784 -#: templates/js/translated/stock.js:2923 +#: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:804 msgid "Customer" msgstr "Klient" @@ -4429,8 +4462,9 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "Dostawcy" @@ -4482,7 +4516,7 @@ msgstr "" #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2243 +#: templates/js/translated/stock.js:2279 msgid "Supplier Part" msgstr "" @@ -4528,7 +4562,7 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4577,15 +4611,17 @@ msgstr "" msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 -#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:193 msgid "Stock Items" msgstr "Towary" @@ -4639,8 +4675,8 @@ msgstr "Etykieta" msgid "Label template file" msgstr "" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "Aktywne" @@ -4665,7 +4701,7 @@ msgstr "Wysokość [mm]" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "Wzór nazwy pliku" @@ -4679,8 +4715,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "Filtry" @@ -4821,7 +4857,7 @@ msgstr "Nie znaleziono pasującego zlecenia zakupu" #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1674 -#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "Zlecenie zakupu" @@ -4830,7 +4866,7 @@ msgstr "Zlecenie zakupu" #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 -#: templates/js/translated/stock.js:2905 +#: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "" @@ -4838,11 +4874,11 @@ msgstr "" msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -5029,9 +5065,9 @@ msgstr "Odebrane" msgid "Number of items received" msgstr "" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2274 +#: templates/js/translated/stock.js:2310 msgid "Purchase Price" msgstr "Cena zakupu" @@ -5084,8 +5120,8 @@ msgstr "Sprawdzone przez" msgid "User who checked this shipment" msgstr "Użytkownik, który sprawdził tę wysyłkę" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "Przesyłka" @@ -5133,7 +5169,7 @@ msgstr "" msgid "Allocation quantity cannot exceed stock quantity" msgstr "Zarezerwowana ilość nie może przekraczać ilości na stanie" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "" @@ -5207,159 +5243,159 @@ msgstr "" msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "Zamówienie nie może zostać anulowane" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "Zlecenie zakupu musi być określone" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "Dostawca musi być zgodny ze zleceniem zakupu" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "Zlecenie zakupu musi być zgodne z dostawcą" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "Pozycja nie pasuje do zlecenia zakupu" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Kod kreskowy" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:610 +#: order/serializers.py:632 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1677 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "" @@ -5733,7 +5769,7 @@ msgid "Pending Shipments" msgstr "Oczekujące przesyłki" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "Akcje" @@ -5763,12 +5799,12 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "ID komponentu" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "Nazwa komponentu" @@ -5780,12 +5816,12 @@ msgstr "" #: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 -#: templates/js/translated/stock.js:1999 +#: templates/js/translated/stock.js:2035 msgid "IPN" msgstr "" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "Wersja" @@ -5861,10 +5897,10 @@ msgstr "" msgid "Category Path" msgstr "Ścieżka kategorii" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -5885,17 +5921,17 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3897 msgid "Part IPN" msgstr "IPN komponentu" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5973,8 +6009,8 @@ msgstr "" msgid "This option must be selected" msgstr "Ta opcja musi być zaznaczona" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5982,12 +6018,17 @@ msgstr "Ta opcja musi być zaznaczona" msgid "Category" msgstr "Kategoria" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Domyślna lokalizacja" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5995,7 +6036,7 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Kategoria komponentu" @@ -6010,7 +6051,8 @@ msgstr "Kategorie części" msgid "Default location for parts in this category" msgstr "Domyślna lokalizacja dla komponentów w tej kategorii" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 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" @@ -6076,7 +6118,7 @@ msgstr "" msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3896 msgid "Part name" msgstr "Nazwa komponentu" @@ -6358,7 +6400,7 @@ msgstr "" #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1732 -#: templates/js/translated/stock.js:2785 +#: templates/js/translated/stock.js:2821 msgid "Date" msgstr "Data" @@ -6410,586 +6452,602 @@ msgstr "" msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3448 -msgid "Test with this name already exists for this part" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "Nazwa testu" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "Testowy opis" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "Wprowadź opis do tego testu" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Wymagane" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "Wymaga wartości" -#: part/models.py:3496 +#: part/models.py:3505 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "Wymaga załącznika" -#: part/models.py:3503 +#: part/models.py:3512 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "Część nadrzędna" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "Dane" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "Wartość parametru" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "Wartość domyślna" -#: part/models.py:3847 +#: part/models.py:3856 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3885 +#: part/models.py:3894 msgid "Part ID or part name" msgstr "" -#: part/models.py:3886 +#: part/models.py:3895 msgid "Unique part ID value" msgstr "Unikalny wartość ID komponentu" -#: part/models.py:3888 +#: part/models.py:3897 msgid "Part IPN value" msgstr "Wartość IPN części" -#: part/models.py:3889 +#: part/models.py:3898 msgid "Level" msgstr "Poziom" -#: part/models.py:3889 +#: part/models.py:3898 msgid "BOM level" msgstr "" -#: part/models.py:3979 +#: part/models.py:3988 msgid "Select parent part" msgstr "Wybierz część nadrzędną" -#: part/models.py:3989 +#: part/models.py:3998 msgid "Sub part" msgstr "Podczęść" -#: part/models.py:3990 +#: part/models.py:3999 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4001 +#: part/models.py:4010 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4007 +#: part/models.py:4016 msgid "This BOM item is optional" msgstr "Ten element BOM jest opcjonalny" -#: part/models.py:4013 +#: part/models.py:4022 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4029 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4021 +#: part/models.py:4030 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4028 +#: part/models.py:4037 msgid "BOM item reference" msgstr "" -#: part/models.py:4036 +#: part/models.py:4045 msgid "BOM item notes" msgstr "Notatki pozycji BOM" -#: part/models.py:4042 +#: part/models.py:4051 msgid "Checksum" msgstr "Suma kontrolna" -#: part/models.py:4043 +#: part/models.py:4052 msgid "BOM line checksum" msgstr "" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4057 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "Zatwierdzone" -#: part/models.py:4049 +#: part/models.py:4058 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4063 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:4055 +#: part/models.py:4064 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4069 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Zezwalaj na warianty" -#: part/models.py:4061 +#: part/models.py:4070 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4146 stock/models.py:649 +#: part/models.py:4155 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4165 part/models.py:4167 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4298 +#: part/models.py:4307 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4319 +#: part/models.py:4328 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4332 +#: part/models.py:4341 msgid "Parent BOM item" msgstr "" -#: part/models.py:4340 +#: part/models.py:4349 msgid "Substitute part" msgstr "Część zastępcza" -#: part/models.py:4356 +#: part/models.py:4365 msgid "Part 1" msgstr "Część 1" -#: part/models.py:4364 +#: part/models.py:4373 msgid "Part 2" msgstr "Część 2" -#: part/models.py:4365 +#: part/models.py:4374 msgid "Select Related Part" msgstr "Wybierz powiązaną część" -#: part/models.py:4384 +#: part/models.py:4393 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4389 +#: part/models.py:4398 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 msgid "Purchase currency of this stock item" msgstr "Waluta zakupu tego towaru" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "Kopiuj obraz" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:432 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:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "Kopiuj parametry" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:480 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "Duplikuj część" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1104 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1078 +#: part/serializers.py:1114 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1088 +#: part/serializers.py:1124 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "Usuń istniejące dane" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1647 +#: part/serializers.py:1693 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "Pomiń nieprawidłowe wiersze" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "Włącz tę opcję, aby pominąć nieprawidłowe wiersze" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1659 +#: part/serializers.py:1705 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "Wyczyść istniejący BOM" -#: part/serializers.py:1694 +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "Nie podano ilości" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "Nieprawidłowa ilość" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "" @@ -7147,7 +7205,7 @@ msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/stock.js:2179 users/models.py:191 +#: templates/js/translated/stock.js:2215 users/models.py:191 msgid "Stocktake" msgstr "" @@ -7221,7 +7279,7 @@ msgid "Validate BOM" msgstr "Weryfikuj BOM" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "Dodaj część do BOM" @@ -7405,7 +7463,7 @@ msgstr "" msgid "Allocated to Sales Orders" msgstr "Przypisane do zamówień sprzedaży" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "" @@ -7509,7 +7567,7 @@ msgstr "Warianty" #: templates/InvenTree/settings/sidebar.html:51 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 -#: templates/js/translated/stock.js:2033 templates/navbar.html:31 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 msgid "Stock" msgstr "Stan" @@ -7555,7 +7613,7 @@ msgstr "" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 -#: templates/js/translated/stock.js:2209 +#: templates/js/translated/stock.js:2245 msgid "Last Updated" msgstr "Ostatnia aktualizacja" @@ -7729,7 +7787,7 @@ msgstr "Znaleziono wyniki dla danych kodu kreskowego" #: plugin/base/barcodes/api.py:154 #: templates/js/translated/purchase_order.js:1406 msgid "Barcode matches existing item" -msgstr "" +msgstr "Kod kreskowy pasuje do istniejącego elementu" #: plugin/base/barcodes/api.py:293 msgid "No matching part data found" @@ -7753,7 +7811,7 @@ msgstr "" #: plugin/base/barcodes/api.py:424 msgid "No match for supplier barcode" -msgstr "" +msgstr "Brak dopasowania dla kodu kreskowego dostawcy" #: plugin/base/barcodes/api.py:467 msgid "Multiple matching line items found" @@ -7765,7 +7823,7 @@ msgstr "" #: plugin/base/barcodes/api.py:508 plugin/base/barcodes/api.py:515 msgid "Barcode does not match an existing stock item" -msgstr "" +msgstr "Kod kreskowy nie pasuje do istniejących pozycji magazynowych" #: plugin/base/barcodes/api.py:526 msgid "Stock item does not match line item" @@ -7999,7 +8057,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "" @@ -8307,16 +8365,16 @@ msgstr "" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "Brak prawidłowych obiektów do szablonu" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "Plik szablonu '{template}' jest brakujący lub nie istnieje" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "Raporty z testów" @@ -8336,103 +8394,111 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "Nazwa szablonu" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "Plik szablonu raportu" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "Opis szablonu raportu" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "Numer zmiany raportu (przyrasta automatycznie)" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "Domyślna wielkość strony dla raportów PDF" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "Renderuj raport w orientacji poziomej" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "Wzorzec generowania nazw plików raportu" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "Szablon raportu jest włączony" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "Filtr części" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "Filtry zapytania zleceń zakupu" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" msgstr "Wycinek" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" msgstr "" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8499,12 +8565,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1492 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Result" msgstr "Wynik" @@ -8531,7 +8597,7 @@ msgstr "Zainstalowane elementy" #: report/templates/report/inventree_test_report_base.html:168 #: stock/admin.py:162 templates/js/translated/stock.js:700 -#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110 msgid "Serial" msgstr "Numer seryjny" @@ -8615,7 +8681,7 @@ msgstr "" #: stock/admin.py:256 stock/models.py:886 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2193 users/models.py:113 +#: templates/js/translated/stock.js:2229 users/models.py:113 msgid "Expiry Date" msgstr "Data ważności" @@ -8713,7 +8779,7 @@ msgstr "Wybierz właściciela" msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:174 templates/js/translated/stock.js:2745 +#: stock/models.py:174 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" @@ -8722,7 +8788,7 @@ msgstr "" msgid "This is an external stock location" msgstr "" -#: stock/models.py:181 templates/js/translated/stock.js:2754 +#: stock/models.py:181 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" @@ -8739,7 +8805,7 @@ msgstr "" msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:290 msgid "Stock item cannot be created for virtual parts" msgstr "" @@ -8784,7 +8850,7 @@ msgstr "Wybierz pasującą część dostawcy dla tego towaru" msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1351 msgid "Packaging this stock item is stored in" msgstr "" @@ -8796,7 +8862,7 @@ msgstr "" msgid "Serial number for this item" msgstr "" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1334 msgid "Batch code for this stock item" msgstr "" @@ -8873,7 +8939,7 @@ msgstr "" msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:529 msgid "Serial numbers already exist" msgstr "Numer seryjny już istnieje" @@ -8905,7 +8971,7 @@ msgstr "" msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1240 msgid "Duplicate stock items" msgstr "" @@ -8929,207 +8995,236 @@ msgstr "" msgid "Entry notes" msgstr "Notatki do wpisu" -#: stock/models.py:2399 +#: stock/models.py:2402 msgid "Value must be provided for this test" msgstr "Należy podać wartość dla tego testu" -#: stock/models.py:2405 +#: stock/models.py:2408 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Test result" msgstr "Wynik testu" -#: stock/models.py:2439 +#: stock/models.py:2442 msgid "Test output value" msgstr "" -#: stock/models.py:2447 +#: stock/models.py:2450 msgid "Test result attachment" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2454 msgid "Test notes" msgstr "" -#: stock/serializers.py:96 +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "" + +#: stock/models.py:2463 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2469 +msgid "Started" +msgstr "" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:100 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:119 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 +#: stock/serializers.py:151 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:184 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:267 +#: stock/serializers.py:282 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:380 +#: stock/serializers.py:402 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:442 +#: stock/serializers.py:464 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:455 +#: stock/serializers.py:477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:462 +#: stock/serializers.py:484 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:480 +#: stock/serializers.py:502 msgid "Optional note field" msgstr "" -#: stock/serializers.py:490 +#: stock/serializers.py:512 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:545 +#: stock/serializers.py:567 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:574 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:553 +#: stock/serializers.py:575 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:566 +#: stock/serializers.py:588 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:596 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:581 +#: stock/serializers.py:607 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:620 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:628 +#: stock/serializers.py:655 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:663 +#: stock/serializers.py:690 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:676 +#: stock/serializers.py:703 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:693 +#: stock/serializers.py:720 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:724 +#: stock/serializers.py:751 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:761 +#: stock/serializers.py:788 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:767 +#: stock/serializers.py:794 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Podlokalizacje" -#: stock/serializers.py:1036 +#: stock/serializers.py:1069 msgid "Part must be salable" msgstr "Część musi być dostępna do sprzedaży" -#: stock/serializers.py:1040 +#: stock/serializers.py:1073 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1044 +#: stock/serializers.py:1077 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1068 +#: stock/serializers.py:1101 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1074 +#: stock/serializers.py:1107 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1082 +#: stock/serializers.py:1115 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1125 stock/serializers.py:1379 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1171 +#: stock/serializers.py:1204 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1176 +#: stock/serializers.py:1209 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1177 +#: stock/serializers.py:1210 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1182 +#: stock/serializers.py:1215 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1183 +#: stock/serializers.py:1216 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1193 +#: stock/serializers.py:1226 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1260 +#: stock/serializers.py:1293 msgid "No Change" msgstr "" -#: stock/serializers.py:1289 +#: stock/serializers.py:1322 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1308 +#: stock/serializers.py:1341 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1336 +#: stock/serializers.py:1369 msgid "Stock transaction notes" msgstr "" @@ -9154,7 +9249,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 msgid "Delete Test Data" msgstr "" @@ -9170,15 +9265,15 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:274 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 msgid "Add Test Result" msgstr "" @@ -9201,17 +9296,17 @@ msgid "Stock adjustment actions" msgstr "" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 msgid "Count stock" msgstr "Przelicz stan magazynowy" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:1803 msgid "Add stock" msgstr "" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1776 +#: templates/js/translated/stock.js:1812 msgid "Remove stock" msgstr "Usuń stan magazynowy" @@ -9220,12 +9315,12 @@ msgid "Serialize stock" msgstr "" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 msgid "Transfer stock" msgstr "Przenieś stan magazynowy" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1884 msgid "Assign to customer" msgstr "" @@ -9364,7 +9459,7 @@ msgid "No stocktake performed" msgstr "" #: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1915 +#: templates/js/translated/stock.js:1951 msgid "stock item" msgstr "" @@ -9469,7 +9564,7 @@ msgid "New Location" msgstr "Nowa lokalizacja" #: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2536 +#: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" @@ -10063,7 +10158,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:37 msgid "New Location Type" msgstr "" @@ -10120,7 +10215,7 @@ msgstr "" msgid "Stock Settings" msgstr "" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:33 msgid "Stock Location Types" msgstr "" @@ -10662,7 +10757,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "Wymagana ilość" @@ -10676,7 +10771,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "Minimalna ilość" @@ -11051,62 +11146,66 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "" @@ -11389,7 +11488,7 @@ msgstr "" #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 -#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11401,7 +11500,7 @@ msgstr "" msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006 +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" @@ -11449,29 +11548,29 @@ msgstr "" msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "" @@ -11804,15 +11903,15 @@ msgstr "" msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3087 +#: templates/js/translated/forms.js:3103 msgid "Select Columns" msgstr "" @@ -12289,7 +12388,7 @@ msgid "No category" msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 -#: templates/js/translated/stock.js:2633 +#: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" @@ -12301,7 +12400,7 @@ msgstr "" msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" @@ -12313,64 +12412,64 @@ msgstr "" msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" @@ -12907,7 +13006,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1737 +#: templates/js/translated/stock.js:1773 msgid "Shipped to customer" msgstr "" @@ -13165,7 +13264,7 @@ msgstr "" msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" @@ -13189,248 +13288,256 @@ msgstr "" msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1440 +#: templates/js/translated/stock.js:1447 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1443 +#: templates/js/translated/stock.js:1450 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1466 +#: templates/js/translated/stock.js:1473 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1530 +#: templates/js/translated/stock.js:1537 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1677 +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1733 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1729 +#: templates/js/translated/stock.js:1765 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1769 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1741 +#: templates/js/translated/stock.js:1777 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1747 +#: templates/js/translated/stock.js:1783 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1839 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1848 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:1897 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1916 +#: templates/js/translated/stock.js:1952 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1921 +#: templates/js/translated/stock.js:1957 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1932 +#: templates/js/translated/stock.js:1968 msgid "Stock Actions" msgstr "" -#: templates/js/translated/stock.js:1976 +#: templates/js/translated/stock.js:2012 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2054 +#: templates/js/translated/stock.js:2090 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2059 +#: templates/js/translated/stock.js:2095 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2062 +#: templates/js/translated/stock.js:2098 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2065 +#: templates/js/translated/stock.js:2101 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2067 +#: templates/js/translated/stock.js:2103 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2069 +#: templates/js/translated/stock.js:2105 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2072 +#: templates/js/translated/stock.js:2108 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2074 +#: templates/js/translated/stock.js:2110 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2114 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2080 +#: templates/js/translated/stock.js:2116 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2085 +#: templates/js/translated/stock.js:2121 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2087 +#: templates/js/translated/stock.js:2123 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2089 +#: templates/js/translated/stock.js:2125 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2129 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2258 +#: templates/js/translated/stock.js:2294 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2305 +#: templates/js/translated/stock.js:2341 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2433 +#: templates/js/translated/stock.js:2469 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2573 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2692 +#: templates/js/translated/stock.js:2728 msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2810 +#: templates/js/translated/stock.js:2846 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2814 +#: templates/js/translated/stock.js:2850 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:2862 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2848 +#: templates/js/translated/stock.js:2884 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2865 +#: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2880 +#: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2897 +#: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2914 +#: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3005 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2977 +#: templates/js/translated/stock.js:3013 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:3049 +#: templates/js/translated/stock.js:3085 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139 +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:3161 +#: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:3182 +#: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:3183 +#: 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:3185 +#: 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:3186 +#: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:3187 +#: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:3188 +#: 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:3201 +#: templates/js/translated/stock.js:3237 msgid "Select part to install" msgstr "" -#: templates/js/translated/stock.js:3264 +#: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" msgstr "" -#: templates/js/translated/stock.js:3277 +#: templates/js/translated/stock.js:3313 msgid "Selected stock items" msgstr "" -#: templates/js/translated/stock.js:3281 +#: templates/js/translated/stock.js:3317 msgid "Change Stock Status" msgstr "" diff --git a/InvenTree/locale/pt/LC_MESSAGES/django.po b/InvenTree/locale/pt/LC_MESSAGES/django.po index 4760472c36..75a1ab762a 100644 --- a/InvenTree/locale/pt/LC_MESSAGES/django.po +++ b/InvenTree/locale/pt/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 04:05+0000\n" -"PO-Revision-Date: 2024-02-28 07:23\n" +"POT-Creation-Date: 2024-03-19 01:26+0000\n" +"PO-Revision-Date: 2024-03-19 11:52\n" "Last-Translator: \n" "Language-Team: Portuguese, Brazilian\n" "Language: pt_BR\n" @@ -30,20 +30,20 @@ msgstr "Usuário não tem permissão para ver este modelo" msgid "Invalid unit provided ({unit})" msgstr "" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "Nenhum valor fornecido" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "Não foi possível converter {original} para {unit}" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" msgstr "Quantidade fornecida inválida" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" msgstr "Quantidade fornecida inválida ({exc})" @@ -64,18 +64,18 @@ msgstr "Insira uma Data" #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 #: templates/js/translated/return_order.js:776 #: templates/js/translated/sales_order.js:1067 #: templates/js/translated/sales_order.js:1982 -#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 msgid "Notes" msgstr "Anotações" @@ -132,42 +132,42 @@ msgstr "O domínio de e-mail providenciado não foi aprovado." msgid "Registration is disabled." msgstr "Cadastro está desativado." -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "Quantidade fornecida inválida" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "Número serial em branco" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "Número de série duplicado" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "Intervalo de grupo inválido: {group}" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "Intervalo do grupo {group} excede a quantidade permitida ({expected_quantity})" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "Sequência de grupo inválida:{group}" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "Nenhum número de série foi encontrado" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "Números de série únicos ({len(serials)}) deve corresponder a quantidade ({expected_quantity})" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "Remova as \"tags\" HTML deste valor" @@ -203,131 +203,135 @@ msgstr "O servidor remoto retornou resposta vazia" msgid "Supplied URL is not a valid image file" msgstr "A URL fornecida não é um arquivo de imagem válido" -#: InvenTree/locales.py:16 +#: InvenTree/locales.py:18 msgid "Bulgarian" msgstr "Búlgaro" -#: InvenTree/locales.py:17 +#: InvenTree/locales.py:19 msgid "Czech" msgstr "Tcheco" -#: InvenTree/locales.py:18 +#: InvenTree/locales.py:20 msgid "Danish" msgstr "Dinamarquês" -#: InvenTree/locales.py:19 +#: InvenTree/locales.py:21 msgid "German" msgstr "Alemão" -#: InvenTree/locales.py:20 +#: InvenTree/locales.py:22 msgid "Greek" msgstr "Grego" -#: InvenTree/locales.py:21 +#: InvenTree/locales.py:23 msgid "English" msgstr "Inglês" -#: InvenTree/locales.py:22 +#: InvenTree/locales.py:24 msgid "Spanish" msgstr "Espanhol" -#: InvenTree/locales.py:23 +#: InvenTree/locales.py:25 msgid "Spanish (Mexican)" msgstr "Espanhol (Mexicano)" -#: InvenTree/locales.py:24 +#: InvenTree/locales.py:26 msgid "Farsi / Persian" msgstr "Persa" -#: InvenTree/locales.py:25 +#: InvenTree/locales.py:27 msgid "Finnish" msgstr "Finlandês" -#: InvenTree/locales.py:26 +#: InvenTree/locales.py:28 msgid "French" msgstr "Francês" -#: InvenTree/locales.py:27 +#: InvenTree/locales.py:29 msgid "Hebrew" msgstr "Hebraico" -#: InvenTree/locales.py:28 +#: InvenTree/locales.py:30 msgid "Hindi" msgstr "Hindu" -#: InvenTree/locales.py:29 +#: InvenTree/locales.py:31 msgid "Hungarian" msgstr "Húngaro" -#: InvenTree/locales.py:30 +#: InvenTree/locales.py:32 msgid "Italian" msgstr "Italiano" -#: InvenTree/locales.py:31 +#: InvenTree/locales.py:33 msgid "Japanese" msgstr "Japonês" -#: InvenTree/locales.py:32 +#: InvenTree/locales.py:34 msgid "Korean" msgstr "Coreano" -#: InvenTree/locales.py:33 +#: InvenTree/locales.py:35 +msgid "Latvian" +msgstr "" + +#: InvenTree/locales.py:36 msgid "Dutch" msgstr "Holandês" -#: InvenTree/locales.py:34 +#: InvenTree/locales.py:37 msgid "Norwegian" msgstr "Norueguês" -#: InvenTree/locales.py:35 +#: InvenTree/locales.py:38 msgid "Polish" msgstr "Polonês" -#: InvenTree/locales.py:36 +#: InvenTree/locales.py:39 msgid "Portuguese" msgstr "Português" -#: InvenTree/locales.py:37 +#: InvenTree/locales.py:40 msgid "Portuguese (Brazilian)" msgstr "Português (Brasileiro)" -#: InvenTree/locales.py:38 +#: InvenTree/locales.py:41 msgid "Russian" msgstr "Russo" -#: InvenTree/locales.py:39 +#: InvenTree/locales.py:42 msgid "Slovak" msgstr "Eslovaco" -#: InvenTree/locales.py:40 +#: InvenTree/locales.py:43 msgid "Slovenian" msgstr "Esloveno" -#: InvenTree/locales.py:41 +#: InvenTree/locales.py:44 msgid "Serbian" msgstr "Sérvio" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:45 msgid "Swedish" msgstr "Sueco" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:46 msgid "Thai" msgstr "Tailandês" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:47 msgid "Turkish" msgstr "Turco" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:48 msgid "Vietnamese" msgstr "Vietnamita" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:49 msgid "Chinese (Simplified)" msgstr "Chinês (Simplificado)" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:50 msgid "Chinese (Traditional)" msgstr "Chinês (Tradicional)" @@ -391,7 +395,7 @@ msgstr "Arquivo ausente" msgid "Missing external link" msgstr "Link externo não encontrado" -#: InvenTree/models.py:559 stock/models.py:2446 +#: InvenTree/models.py:559 stock/models.py:2449 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -401,7 +405,7 @@ msgstr "Anexo" msgid "Select file to attach" msgstr "Selecione arquivo para anexar" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -432,13 +436,13 @@ msgstr "Comentario" msgid "File comment" msgstr "Comentario sobre arquivo" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:3000 users/models.py:100 +#: templates/js/translated/stock.js:3036 users/models.py:100 msgid "User" msgstr "Usuario" @@ -479,10 +483,10 @@ msgstr "Nomes duplicados não podem existir sob o mesmo parental" msgid "Invalid choice" msgstr "Escolha inválida" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -495,7 +499,7 @@ msgstr "Escolha inválida" #: templates/js/translated/company.js:1155 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Nome" @@ -506,10 +510,10 @@ msgstr "Nome" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -523,7 +527,7 @@ msgstr "Nome" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -531,8 +535,8 @@ msgstr "Nome" #: templates/js/translated/return_order.js:314 #: templates/js/translated/sales_order.js:802 #: templates/js/translated/sales_order.js:1812 -#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021 -#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "Descrição" @@ -545,7 +549,7 @@ msgid "parent" msgstr "parent" #: InvenTree/models.py:916 templates/js/translated/part.js:2794 -#: templates/js/translated/stock.js:2721 +#: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Caminho" @@ -581,7 +585,7 @@ msgstr "Erro de servidor" msgid "An error has been logged by the server." msgstr "Log de erro salvo pelo servidor." -#: InvenTree/serializers.py:62 part/models.py:4134 +#: InvenTree/serializers.py:62 part/models.py:4143 msgid "Must be a valid number" msgstr "Preicsa ser um numero valido" @@ -596,89 +600,89 @@ msgstr "Moeda" msgid "Select currency from available options" msgstr "Selecione a Moeda nas opções disponíveis" -#: InvenTree/serializers.py:436 +#: InvenTree/serializers.py:441 msgid "You do not have permission to change this user role." msgstr "Não tem permissões para alterar este papel do usuário." -#: InvenTree/serializers.py:448 +#: InvenTree/serializers.py:453 msgid "Only superusers can create new users" msgstr "Apenas superusuários podem criar novos usuários" -#: InvenTree/serializers.py:467 +#: InvenTree/serializers.py:472 msgid "Your account has been created." msgstr "Sua conta foi criada." -#: InvenTree/serializers.py:469 +#: InvenTree/serializers.py:474 msgid "Please use the password reset function to login" msgstr "Por favor, use a função de redefinir senha para acessar" -#: InvenTree/serializers.py:476 +#: InvenTree/serializers.py:481 msgid "Welcome to InvenTree" msgstr "Bem-vindo(a) ao InvenTree" -#: InvenTree/serializers.py:537 +#: InvenTree/serializers.py:542 msgid "Filename" msgstr "Nome do arquivo" -#: InvenTree/serializers.py:571 +#: InvenTree/serializers.py:576 msgid "Invalid value" msgstr "Valor inválido" -#: InvenTree/serializers.py:591 +#: InvenTree/serializers.py:596 msgid "Data File" msgstr "Arquivo de dados" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:597 msgid "Select data file for upload" msgstr "Selecione um arquivo de dados para enviar" -#: InvenTree/serializers.py:609 +#: InvenTree/serializers.py:614 msgid "Unsupported file type" msgstr "Tipo de arquivo não suportado" -#: InvenTree/serializers.py:615 +#: InvenTree/serializers.py:620 msgid "File is too large" msgstr "O arquivo é muito grande" -#: InvenTree/serializers.py:636 +#: InvenTree/serializers.py:641 msgid "No columns found in file" msgstr "Nenhuma coluna encontrada no arquivo" -#: InvenTree/serializers.py:639 +#: InvenTree/serializers.py:644 msgid "No data rows found in file" msgstr "Nenhuma linha de dados encontrada no arquivo" -#: InvenTree/serializers.py:752 +#: InvenTree/serializers.py:757 msgid "No data rows provided" msgstr "Nenhuma linha de dados fornecida" -#: InvenTree/serializers.py:755 +#: InvenTree/serializers.py:760 msgid "No data columns supplied" msgstr "Nenhuma coluna de dados fornecida" -#: InvenTree/serializers.py:822 +#: InvenTree/serializers.py:827 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Falta a coluna obrigatória: '{name}'" -#: InvenTree/serializers.py:831 +#: InvenTree/serializers.py:836 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Coluna duplicada: \"{col}\"" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:859 msgid "Remote Image" msgstr "Imagens Remota" -#: InvenTree/serializers.py:855 +#: InvenTree/serializers.py:860 msgid "URL of remote image file" msgstr "URL do arquivo de imagem remoto" -#: InvenTree/serializers.py:873 +#: InvenTree/serializers.py:878 msgid "Downloading images from remote URL is not enabled" msgstr "Baixar imagens de URL remota não está habilitado" -#: InvenTree/status.py:66 part/serializers.py:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "Falha em verificar o histórico do trabalhador" @@ -818,7 +822,7 @@ msgstr "Separado do Item Paternal" msgid "Split child item" msgstr "Separar o Item filho" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 msgid "Merged stock items" msgstr "Itens de estoque mesclados" @@ -838,7 +842,7 @@ msgstr "Criação do pedido de produção completado" msgid "Build order output rejected" msgstr "Saída do pedido de produção rejeitada" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 msgid "Consumed by build order" msgstr "Usado no pedido de produção" @@ -938,14 +942,14 @@ msgstr "Sobre o InvenTree" msgid "Build must be cancelled before it can be deleted" msgstr "Produção deve ser cancelada antes de ser deletada" -#: build/api.py:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "Consumível" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -960,7 +964,7 @@ msgid "Tracked" msgstr "Monitorado" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -985,7 +989,7 @@ msgstr "Disponível" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "Ondem de Produção" @@ -1014,7 +1018,7 @@ msgstr "Referência do pedido de produção" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1044,11 +1048,11 @@ msgstr "Pedido de produção para qual este serviço está alocado" #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1059,7 +1063,7 @@ msgstr "Pedido de produção para qual este serviço está alocado" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:267 stock/serializers.py:689 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1086,9 +1090,9 @@ msgstr "Pedido de produção para qual este serviço está alocado" #: templates/js/translated/sales_order.js:1598 #: templates/js/translated/sales_order.js:1796 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960 -#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054 -#: templates/js/translated/stock.js:3200 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 msgid "Part" msgstr "Peça" @@ -1146,8 +1150,8 @@ msgstr "Progresso da produção" msgid "Build status code" msgstr "Código de situação da produção" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Código de Lote" @@ -1242,53 +1246,53 @@ msgstr "Código do projeto" msgid "Project code for this build order" msgstr "Código do projeto para este pedido de produção" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" msgstr "O Pedido de produção {build} foi concluído!" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "Um pedido de produção foi concluído" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "Nenhuma saída de produção especificada" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "Saída de produção já completada" -#: build/models.py:789 +#: build/models.py:805 msgid "Build output does not match Build Order" msgstr "Saída da produção não corresponde ao Pedido de Produção" -#: build/models.py:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 msgid "Quantity must be greater than zero" msgstr "Quantidade deve ser maior que zero" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 msgid "Quantity cannot be greater than the output quantity" msgstr "Quantidade não pode ser maior do que a quantidade de saída" -#: build/models.py:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" msgstr "Objeto de produção" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1298,7 +1302,7 @@ msgstr "Objeto de produção" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:463 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1310,7 +1314,7 @@ msgstr "Objeto de produção" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1325,43 +1329,43 @@ msgstr "Objeto de produção" #: templates/js/translated/sales_order.js:1698 #: templates/js/translated/sales_order.js:1824 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 -#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985 -#: templates/js/translated/stock.js:3068 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "Quantidade" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" msgstr "Quantidade necessária para o pedido de produção" -#: build/models.py:1381 +#: build/models.py:1397 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "Item de produção deve especificar a saída, pois peças mestres estão marcadas como rastreáveis" -#: build/models.py:1390 +#: build/models.py:1406 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "Quantidade alocada ({q}) não deve exceder a quantidade disponível em estoque ({a})" -#: build/models.py:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "O item do estoque está sobre-alocado" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "Quantidade alocada deve ser maior que zero" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "Quantidade deve ser 1 para estoque serializado" -#: build/models.py:1473 +#: build/models.py:1489 msgid "Selected stock item does not match BOM line" msgstr "Item estoque selecionado não coincide com linha da LDM" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 @@ -1372,23 +1376,23 @@ msgstr "Item estoque selecionado não coincide com linha da LDM" #: templates/js/translated/sales_order.js:1605 #: templates/js/translated/sales_order.js:1692 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 -#: templates/js/translated/stock.js:2941 +#: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "Item de estoque" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "Origem do item em estoque" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "Quantidade do estoque para alocar à produção" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "Instalar em" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "Destino do Item do Estoque" @@ -1425,8 +1429,8 @@ msgstr "Quantidade inteira necessária para peças rastreáveis" msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Quantidade inteira necessária, pois a lista de materiais contém peças rastreáveis" -#: build/serializers.py:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Números de Série" @@ -1451,10 +1455,10 @@ msgstr "Os seguintes números de série já existem ou são inválidos" msgid "A list of build outputs must be provided" msgstr "Uma lista de saídas de produção deve ser fornecida" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1466,8 +1470,8 @@ msgstr "Uma lista de saídas de produção deve ser fornecida" #: templates/js/translated/sales_order.js:1627 #: templates/js/translated/sales_order.js:1706 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164 -#: templates/js/translated/stock.js:2835 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 msgid "Location" msgstr "Local" @@ -1493,16 +1497,16 @@ msgstr "Local para saídas de produção concluídas" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 #: templates/js/translated/purchase_order.js:1723 #: templates/js/translated/return_order.js:331 #: templates/js/translated/sales_order.js:819 -#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959 -#: templates/js/translated/stock.js:3084 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 msgid "Status" msgstr "Situação" @@ -1566,7 +1570,7 @@ msgstr "Aceitar que os itens de estoque não foram totalmente alocados para esta msgid "Required stock has not been fully allocated" msgstr "Estoque obrigatório não foi totalmente alocado" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "Aceitar Incompleto" @@ -1602,11 +1606,11 @@ msgstr "Item da linha de produção" msgid "bom_item.part must point to the same part as the build order" msgstr "bin_item.part deve indicar a mesma peça do pedido de produção" -#: build/serializers.py:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1065 msgid "Item must be in stock" msgstr "Item deve estar em estoque" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Quantidade disponível ({q}) excedida" @@ -1619,7 +1623,7 @@ msgstr "Saída de produção deve ser definida para alocação de peças rastrea msgid "Build output cannot be specified for allocation of untracked parts" msgstr "Saída de produção deve ser definida para alocação de peças não rastreadas" -#: build/serializers.py:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "Alocação do Item precisa ser fornecida" @@ -1659,44 +1663,45 @@ msgstr "Itens opcionais" msgid "Allocate optional BOM items to build order" msgstr "Alocar itens LDM opcionais para o pedido de produção" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 #: stock/api.py:745 msgid "BOM Item" msgstr "Item LDM" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "Estoque Alocado" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "No pedido" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "Em Produção" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "Estoque Disponível" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "Estoque obrigatório para o pedido de produção" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "Pedido de produção vencido" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "Pedido de produção {bo} está atrasada" @@ -1862,7 +1867,7 @@ msgstr "Saídas Concluídas" #: templates/js/translated/pricing.js:929 #: templates/js/translated/sales_order.js:769 #: templates/js/translated/sales_order.js:992 -#: templates/js/translated/stock.js:2888 +#: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "Pedido de Venda" @@ -1920,8 +1925,8 @@ msgstr "Peças alocadas" #: templates/js/translated/build.js:1377 #: templates/js/translated/model_renderers.js:235 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153 -#: templates/js/translated/stock.js:3091 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" @@ -1990,27 +1995,31 @@ msgstr "Pedir peças necessárias" msgid "Order Parts" msgstr "Pedir Peças" -#: build/templates/build/detail.html:210 +#: 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 "Saída de Produção Incompletas" -#: build/templates/build/detail.html:214 +#: build/templates/build/detail.html:219 msgid "Create new build output" msgstr "Criar nova saída de produção" -#: build/templates/build/detail.html:215 +#: build/templates/build/detail.html:220 msgid "New Build Output" msgstr "Nova saída de produção" -#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "Consumir estoque" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "Saídas de Produção concluídas" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2026,15 +2035,15 @@ msgstr "Saídas de Produção concluídas" msgid "Attachments" msgstr "Anexos" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "Notas de produção" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "Alocação Completa" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" msgstr "Todas as linhas foram totalmente alocadas" @@ -2112,1390 +2121,1414 @@ msgstr "Descrição do projeto" msgid "User or group responsible for this project" msgstr "Usuário ou grupo responsável por este projeto" -#: common/models.py:737 +#: common/models.py:744 msgid "Settings key (must be unique - case insensitive)" msgstr "Senha de configurações (deve ser única — diferencia maiúsculas de minúsculas)" -#: common/models.py:741 +#: common/models.py:748 msgid "Settings value" msgstr "Valor da Configuração" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "Valor escolhido não é uma opção válida" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "Valor deve ser um valor booleano" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "Valor deve ser um número inteiro" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "A frase senha deve ser diferenciada" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "Nenhum grupo" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "Um domínio vazio não é permitido." -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "Nome de domínio inválido: {domain}" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "Sem extensão" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "Reinicialização necessária" -#: common/models.py:1231 +#: common/models.py:1238 msgid "A setting has been changed which requires a server restart" msgstr "Uma configuração que requer uma reinicialização do servidor foi alterada" -#: common/models.py:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "Migrações pendentes" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "Número de migrações pendentes na base de dados" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "Nome da Instância do Servidor" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "Descritor de frases para a instância do servidor" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "Usar nome da instância" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "Usar o nome da instância na barra de título" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "Restringir a exibição 'sobre'" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "Mostrar 'sobre' modal apenas para superusuários" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "Nome da empresa" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "Nome interno da Empresa" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "URL de Base" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "URL Base da instância do servidor" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "Moeda Padrão" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "Selecione a moeda base para cálculos de preços" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "Intervalo de Atualização da Moeda" -#: common/models.py:1283 +#: common/models.py:1290 msgid "How often to update exchange rates (set to zero to disable)" msgstr "Com que frequência atualizar as taxas de câmbio (defina como zero para desativar)" -#: common/models.py:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "dias" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "Extensão de Atualização de Moeda" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" msgstr "Extensão de Atualização de Moeda a utilizar" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "Baixar do URL" -#: common/models.py:1298 +#: common/models.py:1305 msgid "Allow download of remote images and files from external URL" msgstr "Permitir baixar imagens remotas e arquivos de URLs externos" -#: common/models.py:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "Limite de tamanho para baixar" -#: common/models.py:1305 +#: common/models.py:1312 msgid "Maximum allowable download size for remote image" msgstr "Maior tamanho de imagem remota baixada permitida" -#: common/models.py:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "Usuário-agente utilizado para baixar da URL" -#: common/models.py:1313 +#: common/models.py:1320 msgid "Allow to override the user-agent used to download images and files from external URL (leave blank for the default)" msgstr "Permitir a substituição de imagens e arquivos usados baixados por usuário-agente (deixar em branco por padrão)" -#: common/models.py:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "Validação rigorosa de URL" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "Exigir especificação de esquema ao validar URLs" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "Exigir confirmação" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "Exigir confirmação explícita do usuário para uma certa ação." -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "Profundidade da árvore" -#: common/models.py:1332 +#: common/models.py:1339 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "Profundidade padrão de visualização da árvore. Níveis mais profundos podem ser carregados gradualmente conforme necessário." -#: common/models.py:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "Atualizar Intervalo de Verificação" -#: common/models.py:1339 +#: common/models.py:1346 msgid "How often to check for updates (set to zero to disable)" msgstr "Frequência para verificar atualizações (defina como zero para desativar)" -#: common/models.py:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "Cópia de Segurança Automática" -#: common/models.py:1346 +#: common/models.py:1353 msgid "Enable automatic backup of database and media files" msgstr "Ativar cópia de segurança automática do banco de dados e arquivos de mídia" -#: common/models.py:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "Intervalo de Backup Automático" -#: common/models.py:1352 +#: common/models.py:1359 msgid "Specify number of days between automated backup events" msgstr "Especificar o número de dia entre as cópias de segurança" -#: common/models.py:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "Intervalo para Excluir da Tarefa" -#: common/models.py:1360 +#: common/models.py:1367 msgid "Background task results will be deleted after specified number of days" msgstr "Os resultados da tarefa no plano de fundo serão excluídos após um número especificado de dias" -#: common/models.py:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "Intervalo para Excluir do Registro de Erro" -#: common/models.py:1369 +#: common/models.py:1376 msgid "Error logs will be deleted after specified number of days" msgstr "Registros de erros serão excluídos após um número especificado de dias" -#: common/models.py:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "Intervalo para Excluir de Notificação" -#: common/models.py:1378 +#: common/models.py:1385 msgid "User notifications will be deleted after specified number of days" msgstr "Notificações de usuários será excluído após um número especificado de dias" -#: common/models.py:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Suporte aos códigos de barras" -#: common/models.py:1386 +#: common/models.py:1393 msgid "Enable barcode scanner support in the web interface" msgstr "Ativar suporte a leitor de código de barras na interface web" -#: common/models.py:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "Atraso na entrada de código de barras" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "Tempo de atraso de processamento de entrada de barras" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "Suporte a código de barras via Câmera" -#: common/models.py:1399 +#: common/models.py:1406 msgid "Allow barcode scanning via webcam in browser" msgstr "Permitir escanear código de barras por câmera pelo navegador" -#: common/models.py:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "Revisões de peças" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" msgstr "Habilitar campo de revisão para a Peça" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "Regex IPN" -#: common/models.py:1411 +#: common/models.py:1418 msgid "Regular expression pattern for matching Part IPN" msgstr "Padrão de expressão regular adequado para Peça IPN" -#: common/models.py:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "Permitir Duplicação IPN" -#: common/models.py:1415 +#: common/models.py:1422 msgid "Allow multiple parts to share the same IPN" msgstr "Permitir que várias peças compartilhem o mesmo IPN" -#: common/models.py:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "Permitir Edição IPN" -#: common/models.py:1421 +#: common/models.py:1428 msgid "Allow changing the IPN value while editing a part" msgstr "Permitir trocar o valor do IPN enquanto se edita a peça" -#: common/models.py:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "Copiar dados da LDM da Peça" -#: common/models.py:1427 +#: common/models.py:1434 msgid "Copy BOM data by default when duplicating a part" msgstr "Copiar dados da LDM por padrão quando duplicar a peça" -#: common/models.py:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "Copiar Dados de Parâmetro da Peça" -#: common/models.py:1433 +#: common/models.py:1440 msgid "Copy parameter data by default when duplicating a part" msgstr "Copiar dados de parâmetros por padrão quando duplicar uma peça" -#: common/models.py:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "Copiar Dados Teste da Peça" -#: common/models.py:1439 +#: common/models.py:1446 msgid "Copy test data by default when duplicating a part" msgstr "Copiar dados de teste por padrão quando duplicar a peça" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "Copiar Parâmetros dos Modelos de Categoria" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Copy category parameter templates when creating a part" msgstr "Copiar parâmetros do modelo de categoria quando criar uma peça" -#: common/models.py:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "Modelo" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "Peças são modelos por padrão" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: templates/js/translated/bom.js:1639 #: templates/js/translated/table_filters.js:330 #: templates/js/translated/table_filters.js:721 msgid "Assembly" msgstr "Montagem" -#: common/models.py:1457 +#: common/models.py:1464 msgid "Parts can be assembled from other components by default" msgstr "Peças podem ser montadas a partir de outros componentes por padrão" -#: common/models.py:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "Componente" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Parts can be used as sub-components by default" msgstr "Peças podem ser usadas como sub-componentes por padrão" -#: common/models.py:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "Comprável" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "Peças são compráveis por padrão" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "Vendível" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "Peças vão vendíveis por padrão" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: templates/js/translated/table_filters.js:147 #: templates/js/translated/table_filters.js:223 #: templates/js/translated/table_filters.js:771 msgid "Trackable" msgstr "Rastreável" -#: common/models.py:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "Peças vão rastreáveis por padrão" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: part/templates/part/part_base.html:154 #: templates/js/translated/table_filters.js:143 #: templates/js/translated/table_filters.js:775 msgid "Virtual" msgstr "Virtual" -#: common/models.py:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "Peças são virtuais por padrão" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "Mostrar Importações em Visualizações" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Display the import wizard in some part views" msgstr "Exibir o assistente de importação em algumas visualizações de partes" -#: common/models.py:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "Mostra peças relacionadas" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" msgstr "Mostrar peças relacionadas para uma peça" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "Dados Iniciais de Estoque" -#: common/models.py:1505 +#: common/models.py:1512 msgid "Allow creation of initial stock when adding a new part" msgstr "Permitir Criação de estoque inicial quando adicional uma nova peça" -#: common/models.py:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Dados Iniciais de Fornecedor" -#: common/models.py:1512 +#: common/models.py:1519 msgid "Allow creation of initial supplier data when adding a new part" msgstr "Permitir criação de dados iniciais de fornecedor quando adicionar uma nova peça" -#: common/models.py:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "Formato de Exibição do Nome da Peça" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "Formato para exibir o nome da peça" -#: common/models.py:1525 +#: common/models.py:1532 msgid "Part Category Default Icon" msgstr "Ícone de Categoria de Peça Padrão" -#: common/models.py:1526 +#: common/models.py:1533 msgid "Part category default icon (empty means no icon)" msgstr "Ícone padrão de categoria de peça (vazio significa sem ícone)" -#: common/models.py:1530 +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "Forçar Unidades de Parâmetro" -#: common/models.py:1532 +#: common/models.py:1539 msgid "If units are provided, parameter values must match the specified units" msgstr "Se as unidades são fornecidas, os valores do parâmetro devem corresponder às unidades especificadas" -#: common/models.py:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "Mínimo de Casas Decimais do Preço" -#: common/models.py:1540 +#: common/models.py:1547 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "Mínimo número de casas decimais a exibir quando renderizar dados de preços" -#: common/models.py:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "Máximo Casas Decimais de Preço" -#: common/models.py:1548 +#: common/models.py:1555 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "Número máximo de casas decimais a exibir quando renderizar dados de preços" -#: common/models.py:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "Usar Preços do Fornecedor" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "Incluir quebras de preço do fornecedor nos cálculos de preços globais" -#: common/models.py:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "Sobrescrever histórico de compra" -#: common/models.py:1564 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "Histórico do pedido de compra substitui os intervalos dos preços do fornecedor" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "Usar Preços do Item em Estoque" -#: common/models.py:1572 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "Usar preço inserido manualmente no estoque para cálculos de valores" -#: common/models.py:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "Idade do preço do Item em Estoque" -#: common/models.py:1580 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "Não incluir itens em estoque mais velhos que este número de dias no cálculo de preços" -#: common/models.py:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "Usar Preço Variável" -#: common/models.py:1588 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "Incluir preços variáveis nos cálculos de valores gerais" -#: common/models.py:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "Apenas Ativar Variáveis" -#: common/models.py:1595 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "Apenas usar peças variáveis ativas para calcular preço variáveis" -#: common/models.py:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "Intervalo de Reconstrução de Preços" -#: common/models.py:1603 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "Número de dias antes da atualização automática dos preços das peças" -#: common/models.py:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "Preços Internos" -#: common/models.py:1611 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "Habilitar preços internos para peças" -#: common/models.py:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "Sobrepor Valor Interno" -#: common/models.py:1618 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "Se disponível, preços internos sobrepõe variação de cálculos de preço" -#: common/models.py:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "Ativar impressão de etiquetas" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "Ativar impressão de etiqueta pela interface da internet" -#: common/models.py:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "DPI da Imagem na Etiqueta" -#: common/models.py:1632 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "Resolução de DPI quando gerar arquivo de imagens para fornecer à extensão de impressão de etiquetas" -#: common/models.py:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "Habilitar Relatórios" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "Ativar geração de relatórios" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "Modo de depuração" -#: common/models.py:1645 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "Gerar relatórios em modo de depuração (saída HTML)" -#: common/models.py:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: 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:202 msgid "Page Size" msgstr "Tamanho da página" -#: common/models.py:1651 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "Tamanho padrão da página PDF para relatórios" -#: common/models.py:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "Ativar Relatórios Teste" -#: common/models.py:1657 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "Ativar geração de relatórios de teste" -#: common/models.py:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "Anexar Relatórios de Teste" -#: common/models.py:1664 +#: common/models.py:1677 msgid "When printing a Test Report, attach a copy of the Test Report to the associated Stock Item" msgstr "Quando imprimir um Relatório de Teste, anexar uma cópia do mesmo ao item de estoque associado" -#: common/models.py:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "Seriais Únicos Globais" -#: common/models.py:1671 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "Números de série para itens de estoque devem ser globalmente únicos" -#: common/models.py:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "Preenchimento automático de Números Seriais" -#: common/models.py:1677 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "Preencher números de série automaticamente no formulário" -#: common/models.py:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "Excluir Estoque Esgotado" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "Determina o comportamento padrão quando um item de estoque é esgotado" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "Modelo de Código de Lote" -#: common/models.py:1692 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "Modelo para gerar códigos de lote padrão para itens de estoque" -#: common/models.py:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "Validade do Estoque" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "Ativar função de validade de estoque" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "Vender estoque expirado" -#: common/models.py:1704 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "Permitir venda de estoque expirado" -#: common/models.py:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "Tempo de Estoque Inativo" -#: common/models.py:1711 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "Número de dias em que os itens em estoque são considerados obsoleto antes de vencer" -#: common/models.py:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "Produzir Estoque Vencido" -#: common/models.py:1719 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "Permitir produção com estoque vencido" -#: common/models.py:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "Controle de propriedade do estoque" -#: common/models.py:1725 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "Ativar controle de propriedade sobre locais e itens de estoque" -#: common/models.py:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "Ícone padrão do local de estoque" -#: common/models.py:1731 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "Ícone padrão de local de estoque (vazio significa sem ícone)" -#: common/models.py:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "Mostrar Itens de Estoque Instalados" -#: common/models.py:1736 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "Exibir itens de estoque instalados nas tabelas de estoque" -#: common/models.py:1741 +#: 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 "Build Order Reference Pattern" msgstr "Modelo de Referência de Pedidos de Produção" -#: common/models.py:1743 +#: common/models.py:1764 msgid "Required pattern for generating Build Order reference field" msgstr "Modelo necessário para gerar campo de referência do Pedido de Produção" -#: common/models.py:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "Ativar Pedidos de Devolução" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "Ativar funcionalidade de pedido de retorno na interface do usuário" -#: common/models.py:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "Modelo de Referência de Pedidos de Devolução" -#: common/models.py:1757 +#: common/models.py:1778 msgid "Required pattern for generating Return Order reference field" -msgstr "Modelo necessário para gerar campo de referência do Pedido de Devolução" +msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "Editar os Pedidos de Devolução Concluídos" -#: common/models.py:1765 +#: common/models.py:1786 msgid "Allow editing of return orders after they have been completed" msgstr "Permitir a edição de pedidos de devolução após serem enviados ou concluídos" -#: common/models.py:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "Modelo de Referência de Pedidos de Venda" -#: common/models.py:1773 +#: common/models.py:1794 msgid "Required pattern for generating Sales Order reference field" msgstr "Modelo necessário para gerar campo de referência do Pedido de Venda" -#: common/models.py:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "Envio Padrão de Pedidos de Venda" -#: common/models.py:1780 +#: common/models.py:1801 msgid "Enable creation of default shipment with sales orders" msgstr "Habilitar criação de envio padrão com Pedidos de Vendas" -#: common/models.py:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "Editar os Pedidos de Vendas concluídos" -#: common/models.py:1787 +#: common/models.py:1808 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "Permitir a edição de pedidos de vendas após serem enviados ou concluídos" -#: common/models.py:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "Modelo de Referência de Pedidos de Compras" -#: common/models.py:1795 +#: common/models.py:1816 msgid "Required pattern for generating Purchase Order reference field" msgstr "Modelo necessário para gerar campo de referência do Pedido de Compra" -#: common/models.py:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "Editar Pedidos de Compra Concluídos" -#: common/models.py:1803 +#: common/models.py:1824 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "Permitir a edição de pedidos de compras após serem enviados ou concluídos" -#: common/models.py:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "Autocompletar Pedidos de Compra" -#: common/models.py:1811 +#: common/models.py:1832 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "Marcar automaticamente os pedidos de compra como concluídos quando todos os itens de linha forem recebidos" -#: common/models.py:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "Habitar esquecer senha" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" msgstr "Habilitar a função \"Esqueci minha senha\" nas páginas de acesso" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "Habilitar cadastro" -#: common/models.py:1825 +#: common/models.py:1846 msgid "Enable self-registration for users on the login pages" msgstr "Ativar auto-registro para usuários na página de entrada" -#: common/models.py:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "Ativar SSO" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "Ativar SSO na página de acesso" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "Ativar registro SSO" -#: common/models.py:1838 +#: common/models.py:1859 msgid "Enable self-registration via SSO for users on the login pages" msgstr "Ativar auto-registro por SSO para usuários na página de entrada" -#: common/models.py:1844 +#: common/models.py:1865 msgid "Email required" msgstr "Email obrigatório" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "Exigir do usuário o e-mail no cadastro" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "Auto-preencher usuários SSO" -#: common/models.py:1852 +#: common/models.py:1873 msgid "Automatically fill out user-details from SSO account-data" msgstr "Preencher automaticamente os detalhes do usuário a partir de dados da conta SSO" -#: common/models.py:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "Enviar email duplo" -#: common/models.py:1859 +#: common/models.py:1880 msgid "On signup ask users twice for their mail" msgstr "No registro pedir aos usuários duas vezes pelo email" -#: common/models.py:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "Senha duas vezes" -#: common/models.py:1865 +#: common/models.py:1886 msgid "On signup ask users twice for their password" msgstr "No registro pedir aos usuários duas vezes pela senha" -#: common/models.py:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "Domínios permitidos" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "Restringir registros a certos domínios (separados por vírgula, começando com @)" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "Grupo no cadastro" -#: common/models.py:1879 +#: common/models.py:1900 msgid "Group to which new users are assigned on registration" msgstr "Grupo ao qual novos usuários são atribuídos no registro" -#: common/models.py:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "Forçar AMF" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "Os usuários devem usar uma segurança multifator." -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "Checar extensões no início" -#: common/models.py:1892 +#: common/models.py:1913 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "Checar que todas as extensões instaladas no início — ativar em ambientes de contêineres" -#: common/models.py:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "Verificar por atualizações de plugin" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "Habilitar verificações periódicas de atualizações para plugins instalados" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "Ativar integração URL" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "Ativar extensão para adicionar rotas URL" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "Ativar integração de navegação" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "Ativar extensões para integrar à navegação" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "Ativa integração com aplicativo" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "Ativar extensões para adicionar aplicativos" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "Ativar integração do calendário" -#: common/models.py:1929 +#: common/models.py:1950 msgid "Enable plugins to run scheduled tasks" msgstr "Ativar extensões para executar tarefas agendadas" -#: common/models.py:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "Ativar integração de eventos" -#: common/models.py:1936 +#: common/models.py:1957 msgid "Enable plugins to respond to internal events" msgstr "Ativar extensões para responder a eventos internos" -#: common/models.py:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "Habilitar códigos de projeto" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "Ativar códigos de projeto para rastrear projetos" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "Funcionalidade de Balanço do Inventário" -#: common/models.py:1950 +#: common/models.py:1971 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "Ativar funcionalidade de balanço para gravar níveis de estoque e calcular seu valor" -#: common/models.py:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "Excluir Locais Externos" -#: common/models.py:1958 +#: common/models.py:1979 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "Excluir itens de estoque em locais externos dos cálculos do estoque" -#: common/models.py:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "Período de Balanço Automático" -#: common/models.py:1966 +#: common/models.py:1987 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "Número de dias entre gravação do balanço de estoque (coloque zero para desativar)" -#: common/models.py:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "Intervalo para Excluir o Relatório" -#: common/models.py:1974 +#: common/models.py:1995 msgid "Stocktake reports will be deleted after specified number of days" msgstr "Relatórios de balanço serão apagados após um número de dias especificado" -#: common/models.py:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "Mostrar nomes completos dos usuários" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" msgstr "Mostrar Nomes Completos em vez de Nomes de Usuário" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2029 common/models.py:2429 msgid "Settings key (must be unique - case insensitive" msgstr "Senha de configurações (deve ser única — diferencia maiúsculas de minúsculas" -#: common/models.py:2043 +#: common/models.py:2070 msgid "Hide inactive parts" msgstr "Ocultar peças inativas" -#: common/models.py:2045 +#: common/models.py:2072 msgid "Hide inactive parts in results displayed on the homepage" msgstr "Ocultar peças inativas nos resultados exibidos na página inicial" -#: common/models.py:2051 +#: common/models.py:2078 msgid "Show subscribed parts" msgstr "Mostrar peças subscritas" -#: common/models.py:2052 +#: common/models.py:2079 msgid "Show subscribed parts on the homepage" msgstr "Mostrar peças subscritas na tela inicial" -#: common/models.py:2057 +#: common/models.py:2084 msgid "Show subscribed categories" msgstr "Mostrar categorias subscritas" -#: common/models.py:2058 +#: common/models.py:2085 msgid "Show subscribed part categories on the homepage" msgstr "Mostrar categorias de peças subscritas na tela inicial" -#: common/models.py:2063 +#: common/models.py:2090 msgid "Show latest parts" msgstr "Mostrar peças mais recentes" -#: common/models.py:2064 +#: common/models.py:2091 msgid "Show latest parts on the homepage" msgstr "Mostrar as peças mais recentes na página inicial" -#: common/models.py:2069 +#: common/models.py:2096 msgid "Show unvalidated BOMs" msgstr "Mostrar LDMs não validadas" -#: common/models.py:2070 +#: common/models.py:2097 msgid "Show BOMs that await validation on the homepage" msgstr "Mostrar LDMs que aguardam validação na página inicial" -#: common/models.py:2075 +#: common/models.py:2102 msgid "Show recent stock changes" msgstr "Mostrar alterações recentes de estoque" -#: common/models.py:2076 +#: common/models.py:2103 msgid "Show recently changed stock items on the homepage" msgstr "Mostrar itens de estoque alterados recentemente na página inicial" -#: common/models.py:2081 +#: common/models.py:2108 msgid "Show low stock" msgstr "Mostrar estoque baixo" -#: common/models.py:2082 +#: common/models.py:2109 msgid "Show low stock items on the homepage" msgstr "Mostrar itens de baixo estoque na página inicial" -#: common/models.py:2087 +#: common/models.py:2114 msgid "Show depleted stock" msgstr "Mostrar estoque esgotado" -#: common/models.py:2088 +#: common/models.py:2115 msgid "Show depleted stock items on the homepage" msgstr "Mostrar itens sem estoque na página inicial" -#: common/models.py:2093 +#: common/models.py:2120 msgid "Show needed stock" msgstr "Mostrar estoque necessário" -#: common/models.py:2094 +#: common/models.py:2121 msgid "Show stock items needed for builds on the homepage" msgstr "Mostrar itens de estoque necessários para produções na tela inicial" -#: common/models.py:2099 +#: common/models.py:2126 msgid "Show expired stock" msgstr "Mostrar estoque expirado" -#: common/models.py:2100 +#: common/models.py:2127 msgid "Show expired stock items on the homepage" msgstr "Mostrar expirados itens em estoque na tela inicial" -#: common/models.py:2105 +#: common/models.py:2132 msgid "Show stale stock" msgstr "Mostrar estoque inativo" -#: common/models.py:2106 +#: common/models.py:2133 msgid "Show stale stock items on the homepage" msgstr "Mostrar estoque inativo na tela inicial" -#: common/models.py:2111 +#: common/models.py:2138 msgid "Show pending builds" msgstr "Mostrar produções pendentes" -#: common/models.py:2112 +#: common/models.py:2139 msgid "Show pending builds on the homepage" msgstr "Mostrar produções pendentes na tela inicial" -#: common/models.py:2117 +#: common/models.py:2144 msgid "Show overdue builds" msgstr "Mostrar produções atrasadas" -#: common/models.py:2118 +#: common/models.py:2145 msgid "Show overdue builds on the homepage" msgstr "Mostrar produções atrasadas na tela inicial" -#: common/models.py:2123 +#: common/models.py:2150 msgid "Show outstanding POs" msgstr "Mostrar pedidos de compra pendentes" -#: common/models.py:2124 +#: common/models.py:2151 msgid "Show outstanding POs on the homepage" msgstr "Mostrar os Pedidos de Compras pendentes na página inicial" -#: common/models.py:2129 +#: common/models.py:2156 msgid "Show overdue POs" msgstr "Mostrar Pedidos de Compra atrasados" -#: common/models.py:2130 +#: common/models.py:2157 msgid "Show overdue POs on the homepage" msgstr "Mostrar os Pedidos de Compras atrasadas na tela inicial" -#: common/models.py:2135 +#: common/models.py:2162 msgid "Show outstanding SOs" msgstr "Mostrar pedidos de vendas pendentes" -#: common/models.py:2136 +#: common/models.py:2163 msgid "Show outstanding SOs on the homepage" msgstr "Mostrar os Pedidos de Vendas pendentes na página inicial" -#: common/models.py:2141 +#: common/models.py:2168 msgid "Show overdue SOs" msgstr "Mostrar Pedidos de Venda atrasados" -#: common/models.py:2142 +#: common/models.py:2169 msgid "Show overdue SOs on the homepage" msgstr "Mostrar os Pedidos de Vendas atrasadas na tela inicial" -#: common/models.py:2147 +#: common/models.py:2174 msgid "Show pending SO shipments" msgstr "Mostrar remessas de OV pendentes" -#: common/models.py:2148 +#: common/models.py:2175 msgid "Show pending SO shipments on the homepage" msgstr "Mostrar envios OV pendentes na tela inicial" -#: common/models.py:2153 +#: common/models.py:2180 msgid "Show News" msgstr "Mostrar notícias" -#: common/models.py:2154 +#: common/models.py:2181 msgid "Show news on the homepage" msgstr "Mostrar notícias na tela inicial" -#: common/models.py:2159 +#: common/models.py:2186 msgid "Inline label display" msgstr "Mostrar etiqueta em linha" -#: common/models.py:2161 +#: common/models.py:2188 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "Mostrar etiquetas em PDF no navegador, ao invés de baixar o arquivo" -#: common/models.py:2167 +#: common/models.py:2194 msgid "Default label printer" msgstr "Impressora de etiquetas padrão" -#: common/models.py:2169 +#: common/models.py:2196 msgid "Configure which label printer should be selected by default" msgstr "Configurar qual impressora de etiqueta deve ser selecionada por padrão" -#: common/models.py:2175 +#: common/models.py:2202 msgid "Inline report display" msgstr "Mostrar relatório em linha" -#: common/models.py:2177 +#: common/models.py:2204 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "Mostrar relatórios em PDF no navegador, ao invés de baixar o arquivo" -#: common/models.py:2183 +#: common/models.py:2210 msgid "Search Parts" msgstr "Procurar Peças" -#: common/models.py:2184 +#: common/models.py:2211 msgid "Display parts in search preview window" msgstr "Mostrar peças na janela de visualização de pesquisa" -#: common/models.py:2189 +#: common/models.py:2216 msgid "Search Supplier Parts" msgstr "Buscar Peças do Fornecedor" -#: common/models.py:2190 +#: common/models.py:2217 msgid "Display supplier parts in search preview window" msgstr "Mostrar fornecedor de peças na janela de visualização de pesquisa" -#: common/models.py:2195 +#: common/models.py:2222 msgid "Search Manufacturer Parts" msgstr "Buscar peças do fabricante" -#: common/models.py:2196 +#: common/models.py:2223 msgid "Display manufacturer parts in search preview window" msgstr "Mostrar fabricante de peças na janela de visualização de pesquisa" -#: common/models.py:2201 +#: common/models.py:2228 msgid "Hide Inactive Parts" msgstr "Ocultar peças inativas" -#: common/models.py:2202 +#: common/models.py:2229 msgid "Excluded inactive parts from search preview window" msgstr "Não incluir peças inativas na janela de visualização de pesquisa" -#: common/models.py:2207 +#: common/models.py:2234 msgid "Search Categories" msgstr "Pesquisar Categorias" -#: common/models.py:2208 +#: common/models.py:2235 msgid "Display part categories in search preview window" msgstr "Mostrar categoria das peças na janela de visualização de pesquisa" -#: common/models.py:2213 +#: common/models.py:2240 msgid "Search Stock" msgstr "Pesquisar Estoque" -#: common/models.py:2214 +#: common/models.py:2241 msgid "Display stock items in search preview window" msgstr "Mostrar itens do estoque na janela de visualização de pesquisa" -#: common/models.py:2219 +#: common/models.py:2246 msgid "Hide Unavailable Stock Items" msgstr "Ocultar itens do estoque indisponíveis" -#: common/models.py:2221 +#: common/models.py:2248 msgid "Exclude stock items which are not available from the search preview window" msgstr "Não incluir itens de estoque que não estão disponíveis na janela de visualização de pesquisa" -#: common/models.py:2227 +#: common/models.py:2254 msgid "Search Locations" msgstr "Procurar Locais" -#: common/models.py:2228 +#: common/models.py:2255 msgid "Display stock locations in search preview window" msgstr "Mostrar locais de estoque na janela de visualização de pesquisa" -#: common/models.py:2233 +#: common/models.py:2260 msgid "Search Companies" msgstr "Pesquisar empresas" -#: common/models.py:2234 +#: common/models.py:2261 msgid "Display companies in search preview window" msgstr "Mostrar empresas na janela de visualização de pesquisa" -#: common/models.py:2239 +#: common/models.py:2266 msgid "Search Build Orders" msgstr "Procurar Pedidos de Produção" -#: common/models.py:2240 +#: common/models.py:2267 msgid "Display build orders in search preview window" msgstr "Mostrar pedidos de produção na janela de visualização de pesquisa" -#: common/models.py:2245 +#: common/models.py:2272 msgid "Search Purchase Orders" msgstr "Mostrar Pedido de Compras" -#: common/models.py:2246 +#: common/models.py:2273 msgid "Display purchase orders in search preview window" msgstr "Mostrar pedidos de compra na janela de visualização de pesquisa" -#: common/models.py:2251 +#: common/models.py:2278 msgid "Exclude Inactive Purchase Orders" msgstr "Não incluir Pedidos de Compras Inativos" -#: common/models.py:2253 +#: common/models.py:2280 msgid "Exclude inactive purchase orders from search preview window" msgstr "Não incluir pedidos de compras inativos na janela de visualização de pesquisa" -#: common/models.py:2259 +#: common/models.py:2286 msgid "Search Sales Orders" msgstr "Procurar Pedidos de Vendas" -#: common/models.py:2260 +#: common/models.py:2287 msgid "Display sales orders in search preview window" msgstr "Mostrar pedidos de vendas na janela de visualização de pesquisa" -#: common/models.py:2265 +#: common/models.py:2292 msgid "Exclude Inactive Sales Orders" msgstr "Não Incluir Pedidos de Compras Inativas" -#: common/models.py:2267 +#: common/models.py:2294 msgid "Exclude inactive sales orders from search preview window" msgstr "Não incluir pedidos de vendas inativos na janela de visualização de pesquisa" -#: common/models.py:2273 +#: common/models.py:2300 msgid "Search Return Orders" msgstr "Procurar Pedidos de Devolução" -#: common/models.py:2274 +#: common/models.py:2301 msgid "Display return orders in search preview window" msgstr "Mostrar pedidos de devolução na janela de visualização de pesquisa" -#: common/models.py:2279 +#: common/models.py:2306 msgid "Exclude Inactive Return Orders" msgstr "Não Incluir Pedidos de Devolução Inativas" -#: common/models.py:2281 +#: common/models.py:2308 msgid "Exclude inactive return orders from search preview window" msgstr "Não incluir pedidos de devolução inativos na janela de visualização de pesquisa" -#: common/models.py:2287 +#: common/models.py:2314 msgid "Search Preview Results" msgstr "Mostrar Resultados Anteriores" -#: common/models.py:2289 +#: common/models.py:2316 msgid "Number of results to show in each section of the search preview window" msgstr "Número de resultados mostrados em cada seção da janela de visualização de pesquisa" -#: common/models.py:2295 +#: common/models.py:2322 msgid "Regex Search" msgstr "Pesquisa de Regex" -#: common/models.py:2296 +#: common/models.py:2323 msgid "Enable regular expressions in search queries" msgstr "Permitir expressôes comuns nas conultas de pesquisas" -#: common/models.py:2301 +#: common/models.py:2328 msgid "Whole Word Search" msgstr "Busca de Palavras Inteira" -#: common/models.py:2302 +#: common/models.py:2329 msgid "Search queries return results for whole word matches" msgstr "Pesquisa retorna que palavra inteira coincide" -#: common/models.py:2307 +#: common/models.py:2334 msgid "Show Quantity in Forms" msgstr "Mostrar Quantidade nos Formulários" -#: common/models.py:2308 +#: common/models.py:2335 msgid "Display available part quantity in some forms" msgstr "Mostrar a quantidade de peças disponíveis em alguns formulários" -#: common/models.py:2313 +#: common/models.py:2340 msgid "Escape Key Closes Forms" msgstr "Tecla Esc Fecha Formulários" -#: common/models.py:2314 +#: common/models.py:2341 msgid "Use the escape key to close modal forms" msgstr "Usar a tecla Esc para fechar fomulários modais" -#: common/models.py:2319 +#: common/models.py:2346 msgid "Fixed Navbar" msgstr "Fixar Navbar" -#: common/models.py:2320 +#: common/models.py:2347 msgid "The navbar position is fixed to the top of the screen" msgstr "A posição do Navbar é fixa no topo da tela" -#: common/models.py:2325 +#: common/models.py:2352 msgid "Date Format" msgstr "Formato da data" -#: common/models.py:2326 +#: common/models.py:2353 msgid "Preferred format for displaying dates" msgstr "Formato preferido para mostrar datas" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2366 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Agendamento de peças" -#: common/models.py:2340 +#: common/models.py:2367 msgid "Display part scheduling information" msgstr "Mostrar informações de agendamento de peças" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2372 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Balanço de Peça" -#: common/models.py:2347 +#: common/models.py:2374 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "Mostrar informação de balanço da peça (se a funcionalidade de balanço estiver habilitada)" -#: common/models.py:2353 +#: common/models.py:2380 msgid "Table String Length" msgstr "Comprimento da Tabela de Frases" -#: common/models.py:2355 +#: common/models.py:2382 msgid "Maximum length limit for strings displayed in table views" msgstr "Limite máximo de comprimento para frases exibidas nas visualizações de tabela" -#: common/models.py:2361 +#: common/models.py:2388 msgid "Default part label template" msgstr "Modelo de rótulo padrão da peça" -#: common/models.py:2362 +#: common/models.py:2389 msgid "The part label template to be automatically selected" msgstr "O modelo de rótulo da peça a ser selecionado automaticamente" -#: common/models.py:2367 +#: common/models.py:2394 msgid "Default stock item template" msgstr "Modelo padrão de item de estoque" -#: common/models.py:2369 +#: common/models.py:2396 msgid "The stock item label template to be automatically selected" msgstr "O modelo de rótulo do item a ser selecionado automaticamente" -#: common/models.py:2375 +#: common/models.py:2402 msgid "Default stock location label template" msgstr "Modelo de rótulo de localização do estoque padrão" -#: common/models.py:2377 +#: common/models.py:2404 msgid "The stock location label template to be automatically selected" msgstr "O modelo de rótulo do local de estoque a ser selecionado automaticamente" -#: common/models.py:2383 +#: common/models.py:2410 msgid "Receive error reports" msgstr "Receber relatório de erros" -#: common/models.py:2384 +#: common/models.py:2411 msgid "Receive notifications for system errors" msgstr "Receber notificações para erros do sistema" -#: common/models.py:2389 +#: common/models.py:2416 msgid "Last used printing machines" msgstr "Últimas máquinas de impressão utilizadas" -#: common/models.py:2390 +#: common/models.py:2417 msgid "Save the last used printing machines for a user" msgstr "Salvar as últimas máquinas de impressão usadas para um usuário" -#: common/models.py:2433 +#: common/models.py:2460 msgid "Price break quantity" msgstr "Quantidade de Parcelamentos" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3503,23 +3536,23 @@ msgstr "Quantidade de Parcelamentos" msgid "Price" msgstr "Preço" -#: common/models.py:2441 +#: common/models.py:2468 msgid "Unit price at specified quantity" msgstr "Preço unitário na quantidade especificada" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2639 common/models.py:2824 msgid "Endpoint" msgstr "Ponto final" -#: common/models.py:2613 +#: common/models.py:2640 msgid "Endpoint at which this webhook is received" msgstr "Ponto final em qual o gancho web foi recebido" -#: common/models.py:2623 +#: common/models.py:2650 msgid "Name for this webhook" msgstr "Nome para este webhook" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3529,101 +3562,101 @@ msgstr "Nome para este webhook" msgid "Active" msgstr "Ativo" -#: common/models.py:2627 +#: common/models.py:2654 msgid "Is this webhook active" msgstr "Este gancho web está ativo" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2670 users/models.py:148 msgid "Token" msgstr "Token" -#: common/models.py:2644 +#: common/models.py:2671 msgid "Token for access" msgstr "Token de acesso" -#: common/models.py:2652 +#: common/models.py:2679 msgid "Secret" msgstr "Segredo" -#: common/models.py:2653 +#: common/models.py:2680 msgid "Shared secret for HMAC" msgstr "Segredo compartilhado para HMAC" -#: common/models.py:2761 +#: common/models.py:2788 msgid "Message ID" msgstr "ID da Mensagem" -#: common/models.py:2762 +#: common/models.py:2789 msgid "Unique identifier for this message" msgstr "Identificador exclusivo desta mensagem" -#: common/models.py:2770 +#: common/models.py:2797 msgid "Host" msgstr "Servidor" -#: common/models.py:2771 +#: common/models.py:2798 msgid "Host from which this message was received" msgstr "Servidor do qual esta mensagem foi recebida" -#: common/models.py:2779 +#: common/models.py:2806 msgid "Header" msgstr "Cabeçalho" -#: common/models.py:2780 +#: common/models.py:2807 msgid "Header of this message" msgstr "Cabeçalho da mensagem" -#: common/models.py:2787 +#: common/models.py:2814 msgid "Body" msgstr "Corpo" -#: common/models.py:2788 +#: common/models.py:2815 msgid "Body of this message" msgstr "Corpo da mensagem" -#: common/models.py:2798 +#: common/models.py:2825 msgid "Endpoint on which this message was received" msgstr "Ponto do qual esta mensagem foi recebida" -#: common/models.py:2803 +#: common/models.py:2830 msgid "Worked on" msgstr "Trabalhado em" -#: common/models.py:2804 +#: common/models.py:2831 msgid "Was the work on this message finished?" msgstr "O trabalho desta mensagem foi concluído?" -#: common/models.py:2930 +#: common/models.py:2957 msgid "Id" msgstr "Id" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2959 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "Título" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2963 templates/js/translated/news.js:60 msgid "Published" msgstr "Publicado" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2965 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2967 templates/js/translated/news.js:52 msgid "Summary" msgstr "Resumo" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Read" msgstr "Lida" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Was this news item read?" msgstr "Esta notícia do item foi lida?" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2987 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3633,31 +3666,31 @@ msgstr "Esta notícia do item foi lida?" msgid "Image" msgstr "Imagem" -#: common/models.py:2960 +#: common/models.py:2987 msgid "Image file" msgstr "Arquivo de imagem" -#: common/models.py:3002 +#: common/models.py:3029 msgid "Unit name must be a valid identifier" msgstr "Nome da unidade deve ser um identificador válido" -#: common/models.py:3021 +#: common/models.py:3048 msgid "Unit name" msgstr "Nome da unidade" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "Símbolo" -#: common/models.py:3029 +#: common/models.py:3056 msgid "Optional unit symbol" msgstr "Símbolo de unidade opcional" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "Definição" -#: common/models.py:3037 +#: common/models.py:3064 msgid "Unit definition" msgstr "Definição de unidade" @@ -3961,7 +3994,7 @@ msgid "Link to address information (external)" msgstr "Link para as informações do endereço (externo)" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Peça base" @@ -3972,7 +4005,7 @@ msgstr "Selecionar peça" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3987,7 +4020,7 @@ msgid "Select manufacturer" msgstr "Selecionar fabricante" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4022,9 +4055,9 @@ msgstr "Nome do parâmetro" #: company/models.py:615 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2438 templates/js/translated/company.js:1156 +#: stock/models.py:2441 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1519 msgid "Value" msgstr "Valor" @@ -4033,7 +4066,7 @@ msgid "Parameter value" msgstr "Valor do Parâmetro" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4059,7 +4092,7 @@ msgstr "Parte do fabricante vinculado deve fazer referência à mesma peça base #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4076,7 +4109,7 @@ msgstr "Fornecedor" msgid "Select supplier" msgstr "Selecione o fornecedor" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "Unidade de reserva de estoque fornecedor" @@ -4093,13 +4126,13 @@ msgid "Supplier part description" msgstr "Descrição da peça fornecedor" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:579 msgid "Note" msgstr "Anotação" @@ -4112,10 +4145,10 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "Taxa mínima (ex.: taxa de estoque)" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 -#: templates/js/translated/stock.js:2387 +#: templates/js/translated/stock.js:2423 msgid "Packaging" msgstr "Embalagem" @@ -4157,7 +4190,7 @@ msgstr "Disponibilidade Atualizada" msgid "Date of last update of availability data" msgstr "Data da última atualização da disponibilidade dos dados" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "Moeda padrão utilizada para este fornecedor" @@ -4218,13 +4251,13 @@ msgstr "Excluir imagem" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1100 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 #: templates/js/translated/return_order.js:296 #: templates/js/translated/sales_order.js:784 -#: templates/js/translated/stock.js:2923 +#: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:804 msgid "Customer" msgstr "Cliente" @@ -4429,8 +4462,9 @@ msgstr "Nenhuma informação do fabricante disponível" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "Fornecedores" @@ -4482,7 +4516,7 @@ msgstr "Endereços" #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2243 +#: templates/js/translated/stock.js:2279 msgid "Supplier Part" msgstr "Fornecedor da Peça" @@ -4528,7 +4562,7 @@ msgid "No supplier information available" msgstr "Nenhuma informação do fornecedor está disponível" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4577,15 +4611,17 @@ msgstr "Vincular Código de Barras à Peça do Fornecedor" msgid "Update Part Availability" msgstr "Atualizar Disponibilidade de Peças" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 -#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:193 msgid "Stock Items" msgstr "Itens de Estoque" @@ -4639,8 +4675,8 @@ msgstr "Etiqueta" msgid "Label template file" msgstr "Arquivo de modelo de etiqueta" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "Habilitado" @@ -4665,7 +4701,7 @@ msgstr "Altura [mm]" msgid "Label height, specified in mm" msgstr "Altura da Etiqueta, em mm" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "Padrão de Nome de Arquivo" @@ -4679,8 +4715,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "Filtros de consulta (lista de valores separados por vírgula)" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "Filtros" @@ -4821,7 +4857,7 @@ msgstr "Nenhum pedido de compra correspondente encontrado" #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1674 -#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "Pedido de Compra" @@ -4830,7 +4866,7 @@ msgstr "Pedido de Compra" #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 -#: templates/js/translated/stock.js:2905 +#: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "Devolver pedido" @@ -4838,11 +4874,11 @@ msgstr "Devolver pedido" msgid "Total price for this order" msgstr "Preço total deste pedido" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "Moeda do pedido" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" msgstr "Moeda para este pedido (deixe em branco para usar o padrão da empresa)" @@ -5029,9 +5065,9 @@ msgstr "Recebido" msgid "Number of items received" msgstr "Número de itens recebidos" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2274 +#: templates/js/translated/stock.js:2310 msgid "Purchase Price" msgstr "Preço de Compra" @@ -5084,8 +5120,8 @@ msgstr "Verificado por" msgid "User who checked this shipment" msgstr "Usuário que verificou esta remessa" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "Remessa" @@ -5133,7 +5169,7 @@ msgstr "Não é possível alocar uma linha sem uma peça" msgid "Allocation quantity cannot exceed stock quantity" msgstr "A quantidade de alocação não pode exceder a quantidade em estoque" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "Quantidade deve ser 1 para item de estoque serializado" @@ -5207,159 +5243,159 @@ msgstr "Gastos com esta linha de itens" msgid "Cost associated with return or repair for this line item" msgstr "Gastos para reparar e/ou devolver esta linha de itens" -#: order/serializers.py:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "Pedido não pode ser cancelado" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" msgstr "Permitir que o pedido seja fechado com itens de linha incompletos" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "O pedido tem itens da linha incompletos" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "O pedido não está aberto" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "Moeda de preço de compra" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "A peça do fornecedor deve ser especificada" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "O pedido de compra deve ser especificado" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "O fornecedor deve corresponder o pedido de compra" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "Pedido de compra deve corresponder ao fornecedor" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "Itens de linha" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "O item de linha não corresponde ao pedido de compra" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "Selecione o local de destino para os itens recebidos" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "Digite o código do lote para itens de estoque recebidos" -#: order/serializers.py:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "Digite o número de série para itens de estoque recebidos" -#: order/serializers.py:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Código de barras" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "Código de barras lido" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "Código de barras já em uso" -#: order/serializers.py:610 +#: order/serializers.py:632 msgid "An integer quantity must be provided for trackable parts" msgstr "Quantidade inteira deve ser fornecida para peças rastreáveis" -#: order/serializers.py:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "Itens de linha deve ser providenciados" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "Loca de destino deve ser especificado" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "Código de barras fornecido deve ser único" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "Moeda de preço de venda" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "Nenhum detalhe da remessa fornecido" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "Item de linha não está associado a este pedido" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "Quantidade deve ser positiva" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "Digite números de série para alocar" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "O pedido já foi enviado" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "O envio não está associado a este pedido" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "Nenhuma correspondência encontrada para os seguintes números de série" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "Os seguintes números de série já estão alocados" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "Devolver item do pedido" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" msgstr "Item do pedido não bate com o pedido de devolução" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "Item do pedido já foi recebido" -#: order/serializers.py:1655 +#: order/serializers.py:1677 msgid "Items can only be received against orders which are in progress" msgstr "Itens só podem ser recebidos de pedidos em processamento" -#: order/serializers.py:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "Tipo de moeda para o item do pedido" @@ -5733,7 +5769,7 @@ msgid "Pending Shipments" msgstr "Envios Pendentes" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "Ações" @@ -5763,12 +5799,12 @@ msgstr "Atualizado {part} unid.-preço para {price}" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "Atualizado {part} unid.-preço para {price} e quantidade para {qty}" -#: part/admin.py:39 part/admin.py:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "ID da Peça" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "Nome da Peça" @@ -5780,12 +5816,12 @@ msgstr "Descrição da Peça" #: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 -#: templates/js/translated/stock.js:1999 +#: templates/js/translated/stock.js:2035 msgid "IPN" msgstr "IPN" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "Revisão" @@ -5861,10 +5897,10 @@ msgstr "Nome Paternal" msgid "Category Path" msgstr "Caminho da Categoria" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -5885,17 +5921,17 @@ msgstr "ID Item LDM" msgid "Parent IPN" msgstr "IPN Paternal" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3897 msgid "Part IPN" msgstr "IPN da Peça" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "Preço Mínimo" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5973,8 +6009,8 @@ msgstr "Validar a Lista de Materiais completa" msgid "This option must be selected" msgstr "Esta opção deve ser selecionada" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5982,12 +6018,17 @@ msgstr "Esta opção deve ser selecionada" msgid "Category" msgstr "Categoria" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Local Padrão" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "Estoque Total" @@ -5995,7 +6036,7 @@ msgstr "Estoque Total" msgid "Input quantity for price calculation" msgstr "Quantidade para o cálculo de preço" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Categoria da Peça" @@ -6010,7 +6051,8 @@ msgstr "Categorias de Peça" msgid "Default location for parts in this category" msgstr "Local padrão para peças desta categoria" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 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" @@ -6076,7 +6118,7 @@ msgstr "Uma parte com este Nome, IPN e Revisão já existe." msgid "Parts cannot be assigned to structural part categories!" msgstr "Peças não podem ser atribuídas a categorias estruturais!" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3896 msgid "Part name" msgstr "Nome da peça" @@ -6358,7 +6400,7 @@ msgstr "Estoque total disponível no momento do balanço" #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1732 -#: templates/js/translated/stock.js:2785 +#: templates/js/translated/stock.js:2821 msgid "Date" msgstr "Data" @@ -6410,586 +6452,602 @@ msgstr "Número de peças cobertas pelo Balanço" msgid "User who requested this stocktake report" msgstr "Usuário que solicitou este relatório de balanço" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 msgid "Test templates can only be created for trackable parts" msgstr "Modelos de teste só podem ser criados para peças rastreáveis" -#: part/models.py:3448 -msgid "Test with this name already exists for this part" -msgstr "O teste com este nome já existe para esta peça" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" +msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "Nome de Teste" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "Insira um nome para o teste" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "Descrição do Teste" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "Digite a descrição para este teste" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Requerido" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "Este teste é obrigatório passar?" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "Requer Valor" -#: part/models.py:3496 +#: part/models.py:3505 msgid "Does this test require a value when adding a test result?" msgstr "Este teste requer um valor ao adicionar um resultado de teste?" -#: part/models.py:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "Anexo obrigatório" -#: part/models.py:3503 +#: part/models.py:3512 msgid "Does this test require a file attachment when adding a test result?" msgstr "Este teste requer um anexo ao adicionar um resultado de teste?" -#: part/models.py:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "Parâmetros da caixa de seleção não podem ter unidades" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "Os parâmetros da caixa de seleção não podem ter escolhas" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "Escolhas devem ser únicas" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "Nome do modelo de parâmetro deve ser único" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "Nome do Parâmetro" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "Unidades físicas para este parâmetro" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "Descrição do Parâmetro" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "Caixa de seleção" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "Este parâmetro é uma caixa de seleção?" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "Escolhas" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "Opções válidas para este parâmetro (separadas por vírgulas)" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "Escolha inválida para valor do parâmetro" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "Peça Paternal" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "Modelo de parâmetro" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "Dados" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "Valor do Parâmetro" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "Valor Padrão" -#: part/models.py:3847 +#: part/models.py:3856 msgid "Default Parameter Value" msgstr "Valor Padrão do Parâmetro" -#: part/models.py:3885 +#: part/models.py:3894 msgid "Part ID or part name" msgstr "ID da peça ou nome da peça" -#: part/models.py:3886 +#: part/models.py:3895 msgid "Unique part ID value" msgstr "Valor exclusivo do ID de peça" -#: part/models.py:3888 +#: part/models.py:3897 msgid "Part IPN value" msgstr "Valor da parte IPN" -#: part/models.py:3889 +#: part/models.py:3898 msgid "Level" msgstr "Nível" -#: part/models.py:3889 +#: part/models.py:3898 msgid "BOM level" msgstr "Nível da LDM" -#: part/models.py:3979 +#: part/models.py:3988 msgid "Select parent part" msgstr "Selecione a Peça Parental" -#: part/models.py:3989 +#: part/models.py:3998 msgid "Sub part" msgstr "Sub peça" -#: part/models.py:3990 +#: part/models.py:3999 msgid "Select part to be used in BOM" msgstr "Selecionar peça a ser usada na LDM" -#: part/models.py:4001 +#: part/models.py:4010 msgid "BOM quantity for this BOM item" msgstr "Quantidade de LDM para este item LDM" -#: part/models.py:4007 +#: part/models.py:4016 msgid "This BOM item is optional" msgstr "Este item LDM é opcional" -#: part/models.py:4013 +#: part/models.py:4022 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "Este item LDM é consumível (não é rastreado nos pedidos de construção)" -#: part/models.py:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4029 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Excedente" -#: part/models.py:4021 +#: part/models.py:4030 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Quantidade estimada de desperdício (absoluto ou porcentagem)" -#: part/models.py:4028 +#: part/models.py:4037 msgid "BOM item reference" msgstr "Referência do Item LDM" -#: part/models.py:4036 +#: part/models.py:4045 msgid "BOM item notes" msgstr "Notas do Item LDM" -#: part/models.py:4042 +#: part/models.py:4051 msgid "Checksum" msgstr "Soma de verificação" -#: part/models.py:4043 +#: part/models.py:4052 msgid "BOM line checksum" msgstr "Soma de Verificação da LDM da linha" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4057 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "Validado" -#: part/models.py:4049 +#: part/models.py:4058 msgid "This BOM item has been validated" msgstr "O item da LDM foi validado" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4063 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 "Obtém herdados" -#: part/models.py:4055 +#: part/models.py:4064 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "Este item da LDM é herdado por LDMs para peças variáveis" -#: part/models.py:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4069 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Permitir variações" -#: part/models.py:4061 +#: part/models.py:4070 msgid "Stock items for variant parts can be used for this BOM item" msgstr "Itens de estoque para as peças das variantes podem ser usados para este item LDM" -#: part/models.py:4146 stock/models.py:649 +#: part/models.py:4155 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" msgstr "Quantidade deve ser valor inteiro para peças rastreáveis" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4165 part/models.py:4167 msgid "Sub part must be specified" msgstr "Sub peça deve ser especificada" -#: part/models.py:4298 +#: part/models.py:4307 msgid "BOM Item Substitute" msgstr "Substituir Item da LDM" -#: part/models.py:4319 +#: part/models.py:4328 msgid "Substitute part cannot be the same as the master part" msgstr "A peça de substituição não pode ser a mesma que a peça mestre" -#: part/models.py:4332 +#: part/models.py:4341 msgid "Parent BOM item" msgstr "Item LDM Parental" -#: part/models.py:4340 +#: part/models.py:4349 msgid "Substitute part" msgstr "Substituir peça" -#: part/models.py:4356 +#: part/models.py:4365 msgid "Part 1" msgstr "Parte 1" -#: part/models.py:4364 +#: part/models.py:4373 msgid "Part 2" msgstr "Parte 2" -#: part/models.py:4365 +#: part/models.py:4374 msgid "Select Related Part" msgstr "Selecionar Peça Relacionada" -#: part/models.py:4384 +#: part/models.py:4393 msgid "Part relationship cannot be created between a part and itself" msgstr "Relacionamento da peça não pode ser criada com ela mesma" -#: part/models.py:4389 +#: part/models.py:4398 msgid "Duplicate relationship already exists" msgstr "Relação duplicada já existe" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: part/templates/part/category.html:122 part/templates/part/category.html:207 #: part/templates/part/category_sidebar.html:7 msgid "Subcategories" msgstr "Sub-categorias" -#: part/serializers.py:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 msgid "Purchase currency of this stock item" msgstr "Moeda de compra deste item de estoque" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "Nenhuma parte selecionada" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "Selecionar categoria" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "Peça Original" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "Selecione a peça original para duplicar" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "Copiar imagem" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "Copiar imagem da peça original" -#: part/serializers.py:432 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "Copiar LDM" -#: part/serializers.py:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "Copiar lista de materiais da peça original" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "Copiar Parâmetros" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "Copiar dados do parâmetro da peça original" -#: part/serializers.py:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "Copiar Notas" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "Copiar imagem da peça original" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "Quantidade Inicial de Estoque" -#: part/serializers.py:462 +#: part/serializers.py:480 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "Especificar a quantidade inicial de estoque para a peça. Se for zero, nenhum estoque é adicionado." -#: part/serializers.py:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "Local Inicial do Estoque" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "Especifique o local do estoque inicial para esta Peça" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "Selecione o fornecedor (ou deixe em branco para pular)" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "Selecione fabricante (ou deixe em branco para pular)" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "Número de Peça do Fabricante" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "A empresa selecionada não é um fornecedor válido" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "A empresa selecionada não é um fabricante válido" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "A peça do fabricante que corresponde a essa MPN já existe" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "A peça do fornecedor que corresponde a essa SKU já existe" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "Peça duplicada" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "Copiar dados iniciais de outra peça" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "Estoque inicial" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "Criar peça com a quantidade inicial de estoque" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "Informações do Fornecedor" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "Adicionar informação inicial de fornecedor para esta peça" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "Copiar Parâmetros da Categoria" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" msgstr "Copiar modelos de parâmetros a partir de categoria de peça selecionada" -#: part/serializers.py:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "Imagem Existente" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "Nome de arquivo de uma imagem de peça existente" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "A imagem não existe" -#: part/serializers.py:1068 +#: part/serializers.py:1104 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "Limitar o relatório de balanço a uma determinada peça e quaisquer peças variantes" -#: part/serializers.py:1078 +#: part/serializers.py:1114 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "Limitar o relatório de balanço a uma determinada categoria, e qualquer peças filhas" -#: part/serializers.py:1088 +#: part/serializers.py:1124 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "Limitar o relatório de balanço a um determinado local de estoque, e qualquer local filho" -#: part/serializers.py:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "Excluir Estoque externo" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "Excluir itens de estoque em locais externos" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "Gerar relatório" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "Gerar arquivo de relatório contendo dados de estoque calculados" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "Atualizar Peças" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "Atualizar peças especificadas com dados de estoque calculados" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "Função de Balanço de Estoque não está ativada" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "Sobrepor valor calculado para preço mínimo" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "Moeda do preço mínimo" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "Sobrepor valor calculado para preço máximo" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "Moeda do preço máximo" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "Atualizar" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "Atualizar preços desta peça" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "Não foi possível converter das moedas fornecidas para {default_currency}" -#: part/serializers.py:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "Preço mínimo não pode ser maior que o preço máximo" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "Preço máximo não pode ser menor que o preço mínimo" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "Selecionar peça para copiar a LDM" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "Remover Dado Existente" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" msgstr "Remova itens LDM existentes antes de copiar" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "Incluir Herdados" -#: part/serializers.py:1647 +#: part/serializers.py:1693 msgid "Include BOM items which are inherited from templated parts" msgstr "Incluir itens LDM que são herdados de peças modelo" -#: part/serializers.py:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "Pular Linhas inválidas" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "Habilitar esta opção para pular linhas inválidas" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "Copiar Peças Substitutas" -#: part/serializers.py:1659 +#: part/serializers.py:1705 msgid "Copy substitute parts when duplicate BOM items" msgstr "Copiar peças de substitutas quando duplicar itens de LDM" -#: part/serializers.py:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "Limpar LDM Existente" -#: part/serializers.py:1694 +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "Apagar itens LDM existentes antes de carregar" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "Nenhuma coluna de peça especificada" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "Múltiplas peças correspondentes encontradas" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "Nenhuma peça correspondente encontrada" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "Peça não está designada como componente" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "Quantidade não foi fornecida" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "Quantidade Inválida" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "Pelo menos um item LDM é necessário" @@ -7147,7 +7205,7 @@ msgstr "Adicionar informações de balanço de estoque" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/stock.js:2179 users/models.py:191 +#: templates/js/translated/stock.js:2215 users/models.py:191 msgid "Stocktake" msgstr "Balanço" @@ -7221,7 +7279,7 @@ msgid "Validate BOM" msgstr "Validar LDM" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "Adicionar Item LDM" @@ -7405,7 +7463,7 @@ msgstr "Alocado para Pedidos de Construção" msgid "Allocated to Sales Orders" msgstr "Alocado para Pedidos de Venda" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "Pode Produzir" @@ -7509,7 +7567,7 @@ msgstr "Variantes" #: templates/InvenTree/settings/sidebar.html:51 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 -#: templates/js/translated/stock.js:2033 templates/navbar.html:31 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 msgid "Stock" msgstr "Estoque" @@ -7555,7 +7613,7 @@ msgstr "Editar" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 -#: templates/js/translated/stock.js:2209 +#: templates/js/translated/stock.js:2245 msgid "Last Updated" msgstr "Última atualização" @@ -7999,7 +8057,7 @@ msgstr "Borda" msgid "Print a border around each label" msgstr "Imprima uma borda em torno de cada etiqueta" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "Paisagem" @@ -8307,16 +8365,16 @@ msgstr "" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "Nenhum objeto válido fornecido para o modelo" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "Arquivo modelo '{template}' perdido ou não existe" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "Relatório de teste" @@ -8336,103 +8394,111 @@ msgstr "Ofício" msgid "Letter" msgstr "Carta" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "Nome do modelo" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "Arquivo modelo de relatório" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "Descrição do modelo de relatório" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "Relatar número de revisão (auto-incrementos)" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "Tamanho da página para relatórios PDF" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "Renderizar relatório em orientação paisagem" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "Padrão para gerar nomes de arquivo de relatórios" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "Modelo de relatório Habilitado" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "Filtros de consulta de itens de estoque(lista de valores separados por vírgula)" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "Incluir testes instalados" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "Incluir resultados de testes para itens de estoque instalados dentro de item montado" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "Filtros de Produção" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "Filtros de consulta de produção (lista de valores separados por vírgula" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "Filtros de Peças" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "Filtros de consulta de peças (lista de valores separados por vírgula" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "Filtros de consultas de pedidos de compra" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "Filtros de consultas de pedidos de venda" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "Filtrar pesquisa de itens devolvidos" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" msgstr "Recorte" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "Relatar arquivo de recorte" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "Descrição do arquivo de recorte" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" msgstr "Patrimônio" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "Reportar arquivo de ativos" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "Descrição do arquivo de ativos" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "filtros de consulta de locais de estoque(lista de valores separados por vírgula)" @@ -8499,12 +8565,12 @@ msgid "Test Results" msgstr "Resultados do teste" #: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1492 msgid "Test" msgstr "Teste" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Result" msgstr "Resultado" @@ -8531,7 +8597,7 @@ msgstr "Itens instalados" #: report/templates/report/inventree_test_report_base.html:168 #: stock/admin.py:162 templates/js/translated/stock.js:700 -#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110 msgid "Serial" msgstr "Série" @@ -8615,7 +8681,7 @@ msgstr "Excluir quando esgotado" #: stock/admin.py:256 stock/models.py:886 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2193 users/models.py:113 +#: templates/js/translated/stock.js:2229 users/models.py:113 msgid "Expiry Date" msgstr "Data de validade" @@ -8713,7 +8779,7 @@ msgstr "Selecionar Responsável" msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "Os itens de estoque podem não estar diretamente localizados em um local de estoque estrutural, mas podem ser localizados em locais filhos." -#: stock/models.py:174 templates/js/translated/stock.js:2745 +#: stock/models.py:174 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "Externo" @@ -8722,7 +8788,7 @@ msgstr "Externo" msgid "This is an external stock location" msgstr "Esta é uma localização de estoque externo" -#: stock/models.py:181 templates/js/translated/stock.js:2754 +#: stock/models.py:181 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "Tipo de localização" @@ -8739,7 +8805,7 @@ msgstr "Você não pode tornar este local do estoque estrutural, pois alguns ite msgid "Stock items cannot be located into structural stock locations!" msgstr "Os itens de estoque não podem estar localizados em locais de estoque estrutural!" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:290 msgid "Stock item cannot be created for virtual parts" msgstr "Item de estoque não pode ser criado para peças virtuais" @@ -8784,7 +8850,7 @@ msgstr "Selecione uma peça do fornecedor correspondente para este item de estoq msgid "Where is this stock item located?" msgstr "Onde está localizado este item de estoque?" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1351 msgid "Packaging this stock item is stored in" msgstr "Embalagem deste item de estoque está armazenado em" @@ -8796,7 +8862,7 @@ msgstr "Este item está instalado em outro item?" msgid "Serial number for this item" msgstr "Número de série para este item" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1334 msgid "Batch code for this stock item" msgstr "Código do lote para este item de estoque" @@ -8873,7 +8939,7 @@ msgstr "Números de série devem ser uma lista de números inteiros" msgid "Quantity does not match serial numbers" msgstr "A quantidade não corresponde aos números de série" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:529 msgid "Serial numbers already exist" msgstr "Números de série já existem" @@ -8905,7 +8971,7 @@ msgstr "Item no estoque está em produção no momento" msgid "Serialized stock cannot be merged" msgstr "Itens de série não podem ser mesclados" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1240 msgid "Duplicate stock items" msgstr "Item de estoque duplicado" @@ -8929,207 +8995,236 @@ msgstr "Item do estoque não pode ser realocado se não houver estoque da mesma" msgid "Entry notes" msgstr "Observações de entrada" -#: stock/models.py:2399 +#: stock/models.py:2402 msgid "Value must be provided for this test" msgstr "Deve-se fornecer o valor desse teste" -#: stock/models.py:2405 +#: stock/models.py:2408 msgid "Attachment must be uploaded for this test" msgstr "O anexo deve ser enviado para este teste" -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Test result" msgstr "Resultado do teste" -#: stock/models.py:2439 +#: stock/models.py:2442 msgid "Test output value" msgstr "Valor da saída do teste" -#: stock/models.py:2447 +#: stock/models.py:2450 msgid "Test result attachment" msgstr "Anexo do resultado do teste" -#: stock/models.py:2451 +#: stock/models.py:2454 msgid "Test notes" msgstr "Notas do teste" -#: stock/serializers.py:96 +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "" + +#: stock/models.py:2463 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2469 +msgid "Started" +msgstr "" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:100 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:119 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 +#: stock/serializers.py:151 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:184 msgid "Serial number is too large" msgstr "Número de série é muito grande" -#: stock/serializers.py:267 +#: stock/serializers.py:282 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "Usar tamanho do pacote ao adicionar: a quantidade definida é o número de pacotes" -#: stock/serializers.py:380 +#: stock/serializers.py:402 msgid "Purchase price of this stock item, per unit or pack" msgstr "Preço de compra para este item de estoque, por unidade ou pacote" -#: stock/serializers.py:442 +#: stock/serializers.py:464 msgid "Enter number of stock items to serialize" msgstr "Insira o número de itens de estoque para serializar" -#: stock/serializers.py:455 +#: stock/serializers.py:477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "Quantidade não deve exceder a quantidade disponível em estoque ({q})" -#: stock/serializers.py:462 +#: stock/serializers.py:484 msgid "Enter serial numbers for new items" msgstr "Inserir número de série para novos itens" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 msgid "Destination stock location" msgstr "Local de destino do estoque" -#: stock/serializers.py:480 +#: stock/serializers.py:502 msgid "Optional note field" msgstr "Campo opcional de notas" -#: stock/serializers.py:490 +#: stock/serializers.py:512 msgid "Serial numbers cannot be assigned to this part" msgstr "Números de série não podem ser atribuídos a esta peça" -#: stock/serializers.py:545 +#: stock/serializers.py:567 msgid "Select stock item to install" msgstr "Selecione o item de estoque para instalar" -#: stock/serializers.py:552 +#: stock/serializers.py:574 msgid "Quantity to Install" msgstr "Quantidade a Instalar" -#: stock/serializers.py:553 +#: stock/serializers.py:575 msgid "Enter the quantity of items to install" msgstr "Insira a quantidade de itens a instalar" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 msgid "Add transaction note (optional)" msgstr "Adicionar nota de transação (opcional)" -#: stock/serializers.py:566 +#: stock/serializers.py:588 msgid "Quantity to install must be at least 1" msgstr "A quantidade para instalar deve ser pelo menos 1" -#: stock/serializers.py:574 +#: stock/serializers.py:596 msgid "Stock item is unavailable" msgstr "Item de estoque indisponível" -#: stock/serializers.py:581 +#: stock/serializers.py:607 msgid "Selected part is not in the Bill of Materials" msgstr "Peça selecionada não está na Lista de Materiais" -#: stock/serializers.py:593 +#: stock/serializers.py:620 msgid "Quantity to install must not exceed available quantity" msgstr "Quantidade a instalar não deve exceder a quantidade disponível" -#: stock/serializers.py:628 +#: stock/serializers.py:655 msgid "Destination location for uninstalled item" msgstr "Local de destino para o item desinstalado" -#: stock/serializers.py:663 +#: stock/serializers.py:690 msgid "Select part to convert stock item into" msgstr "Selecione peça para converter o item de estoque em" -#: stock/serializers.py:676 +#: stock/serializers.py:703 msgid "Selected part is not a valid option for conversion" msgstr "Peça selecionada não é uma opção válida para conversão" -#: stock/serializers.py:693 +#: stock/serializers.py:720 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "Não é possível converter o item de estoque com a Peça de Fornecedor atribuída" -#: stock/serializers.py:724 +#: stock/serializers.py:751 msgid "Destination location for returned item" msgstr "Local de destino para item retornado" -#: stock/serializers.py:761 +#: stock/serializers.py:788 msgid "Select stock items to change status" msgstr "Selecionar itens de estoque para mudar estados" -#: stock/serializers.py:767 +#: stock/serializers.py:794 msgid "No stock items selected" msgstr "Nenhum item de estoque selecionado" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Sub-locais" -#: stock/serializers.py:1036 +#: stock/serializers.py:1069 msgid "Part must be salable" msgstr "Parte deve ser comercializável" -#: stock/serializers.py:1040 +#: stock/serializers.py:1073 msgid "Item is allocated to a sales order" msgstr "Item é alocado para um pedido de venda" -#: stock/serializers.py:1044 +#: stock/serializers.py:1077 msgid "Item is allocated to a build order" msgstr "Item está alocado a um pedido de produção" -#: stock/serializers.py:1068 +#: stock/serializers.py:1101 msgid "Customer to assign stock items" msgstr "Cliente para atribuir itens de estoque" -#: stock/serializers.py:1074 +#: stock/serializers.py:1107 msgid "Selected company is not a customer" msgstr "A empresa selecionada não é um cliente" -#: stock/serializers.py:1082 +#: stock/serializers.py:1115 msgid "Stock assignment notes" msgstr "Nodas atribuídas a estoque" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1125 stock/serializers.py:1379 msgid "A list of stock items must be provided" msgstr "Uma lista de item de estoque deve ser providenciada" -#: stock/serializers.py:1171 +#: stock/serializers.py:1204 msgid "Stock merging notes" msgstr "Notas de fusão de estoque" -#: stock/serializers.py:1176 +#: stock/serializers.py:1209 msgid "Allow mismatched suppliers" msgstr "Permitir fornecedores divergentes" -#: stock/serializers.py:1177 +#: stock/serializers.py:1210 msgid "Allow stock items with different supplier parts to be merged" msgstr "Permitir a fusão de itens de estoque de fornecedores diferentes" -#: stock/serializers.py:1182 +#: stock/serializers.py:1215 msgid "Allow mismatched status" msgstr "Permitir estado incompatível" -#: stock/serializers.py:1183 +#: stock/serializers.py:1216 msgid "Allow stock items with different status codes to be merged" msgstr "Permitir a fusão de itens de estoque com estado diferentes" -#: stock/serializers.py:1193 +#: stock/serializers.py:1226 msgid "At least two stock items must be provided" msgstr "Ao menos dois itens de estoque devem ser providenciados" -#: stock/serializers.py:1260 +#: stock/serializers.py:1293 msgid "No Change" msgstr "" -#: stock/serializers.py:1289 +#: stock/serializers.py:1322 msgid "StockItem primary key value" msgstr "Valor da chave primária do Item Estoque" -#: stock/serializers.py:1308 +#: stock/serializers.py:1341 msgid "Stock item status code" msgstr "Código de estado do item estoque" -#: stock/serializers.py:1336 +#: stock/serializers.py:1369 msgid "Stock transaction notes" msgstr "Notas da transação de estoque" @@ -9154,7 +9249,7 @@ msgstr "Dados de teste" msgid "Test Report" msgstr "Relatório do teste" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 msgid "Delete Test Data" msgstr "Excluir dados de teste" @@ -9170,15 +9265,15 @@ msgstr "Notas de Item Estoque" msgid "Installed Stock Items" msgstr "Itens de Estoque Instalados" -#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 msgid "Install Stock Item" msgstr "Instalar Item de Estoque" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:274 msgid "Delete all test results for this stock item" msgstr "Excluir todos os resultados de teste deste item de estoque" -#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 msgid "Add Test Result" msgstr "Adicionar Resultado de Teste" @@ -9201,17 +9296,17 @@ msgid "Stock adjustment actions" msgstr "Ações de ajuste de estoque" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 msgid "Count stock" msgstr "Contagem de estoque" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:1803 msgid "Add stock" msgstr "Adicionar estoque" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1776 +#: templates/js/translated/stock.js:1812 msgid "Remove stock" msgstr "Remover estoque" @@ -9220,12 +9315,12 @@ msgid "Serialize stock" msgstr "Serializar estoque" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 msgid "Transfer stock" msgstr "Transferir estoque" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1884 msgid "Assign to customer" msgstr "Disponibilizar para o cliente" @@ -9364,7 +9459,7 @@ msgid "No stocktake performed" msgstr "Nenhum balanço feito" #: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1915 +#: templates/js/translated/stock.js:1951 msgid "stock item" msgstr "item de estoque" @@ -9469,7 +9564,7 @@ msgid "New Location" msgstr "Novo local" #: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2536 +#: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "local de estoque" @@ -10063,7 +10158,7 @@ msgid "Delete Location Type" msgstr "Apagar Tipo de Localização" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:37 msgid "New Location Type" msgstr "Novo Tipo de localização" @@ -10120,7 +10215,7 @@ msgstr "Configurações do Pedido de Venda" msgid "Stock Settings" msgstr "Configurações de Estoque" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:33 msgid "Stock Location Types" msgstr "Tipos de Locais de estoque" @@ -10662,7 +10757,7 @@ msgid "The following parts are low on required stock" msgstr "As peças a seguir estão abaixo do estoque requerido" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "Quantidade Requerida" @@ -10676,7 +10771,7 @@ msgid "Click on the following link to view this part" msgstr "Clique no link abaixo para ver esta peça" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "Quantidade Mínima" @@ -11051,62 +11146,66 @@ msgstr "Preços da BOM estão incompletos" msgid "No pricing available" msgstr "Nenhum preço disponível" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "Nenhum Estoque Disponível" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "Incluir estoque de variantes e substitutos" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "Incluir estoque de variantes" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "Incluir estoque de substitutos" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "Itens consumíveis" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "Validar Item da BOM" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "Esta linha foi validada" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "Editar peças substitutas" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "Editar Item da BOM" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "Apagar Item da BOM" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "Ver BOM" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "Nenhum item da BOM encontrado" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "Peça Requerida" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "Herdado da BOM paternal" @@ -11389,7 +11488,7 @@ msgstr "Nenhuma produção corresponde a consulta" #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 -#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 msgid "Select" msgstr "Selecionar" @@ -11401,7 +11500,7 @@ msgstr "Pedido de produção está atrasada" msgid "Progress" msgstr "Progresso" -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006 +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "Sem informações de usuário" @@ -11449,29 +11548,29 @@ msgstr "Quantidade Unitária" msgid "Sufficient stock available" msgstr "Estoque suficiente disponível" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "Item Consumível" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "Item rastreado" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "Estoque de produção" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 msgid "Order stock" msgstr "Pedir Estoque" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "Alocar Estoque" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "Remover alocação de estoque" @@ -11804,15 +11903,15 @@ msgstr "Buscando" msgid "Clear input" msgstr "Limpar entrada" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "File Column" msgstr "Coluna de arquivos" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "Field Name" msgstr "Nome do Campo" -#: templates/js/translated/forms.js:3087 +#: templates/js/translated/forms.js:3103 msgid "Select Columns" msgstr "Selecionar Colunas" @@ -12289,7 +12388,7 @@ msgid "No category" msgstr "Nenhuma categoria" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 -#: templates/js/translated/stock.js:2633 +#: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "Visualizar como lista" @@ -12301,7 +12400,7 @@ msgstr "Exibir como grade" msgid "No subcategories found" msgstr "Nenhuma subcategoria encontrada" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "Exibir como árvore" @@ -12313,64 +12412,64 @@ msgstr "Carregar Subcategorias" msgid "Subscribed category" msgstr "Categoria inscrita" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "Nenhum modelo de teste corresponde à consulta" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 msgid "Edit test result" msgstr "Editar resultados de teste" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 msgid "Delete test result" msgstr "Excluir resultado do teste" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "Este teste é definido para uma peça parental" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "Editar Modelo de Resultado de Teste" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "Excluir Modelo de Resultado de Teste" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "Nenhuma data especificada" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "Data especificada está no passado" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "Especulativo" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "Nenhuma informação de agendamento para esta peça" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "Erro ao obter informações de agendamento para esta peça" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "Quantidades de Estoque Agendadas" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "Quantidade Máxima" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "Nível Mínimo de Estoque" @@ -12907,7 +13006,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1737 +#: templates/js/translated/stock.js:1773 msgid "Shipped to customer" msgstr "" @@ -13165,7 +13264,7 @@ msgstr "Quantidade não pode ser ajustada para estoque serializado" msgid "Specify stock quantity" msgstr "Especifique quantidade no estoque" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "Selecionar Itens de Estoque" @@ -13189,248 +13288,256 @@ msgstr "FALHOU" msgid "NO RESULT" msgstr "SEM RESULTADO" -#: templates/js/translated/stock.js:1440 +#: templates/js/translated/stock.js:1447 msgid "Pass test" msgstr "Passou no teste" -#: templates/js/translated/stock.js:1443 +#: templates/js/translated/stock.js:1450 msgid "Add test result" msgstr "Adicionar resultado de teste" -#: templates/js/translated/stock.js:1466 +#: templates/js/translated/stock.js:1473 msgid "No test results found" msgstr "Nenhum resultado de teste encontrado" -#: templates/js/translated/stock.js:1530 +#: templates/js/translated/stock.js:1537 msgid "Test Date" msgstr "Data do Teste" -#: templates/js/translated/stock.js:1677 +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 msgid "Edit Test Result" msgstr "Editar Resultado do Teste" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1733 msgid "Delete Test Result" msgstr "Excluir Resultado do Teste" -#: templates/js/translated/stock.js:1729 +#: templates/js/translated/stock.js:1765 msgid "In production" msgstr "Em produção" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1769 msgid "Installed in Stock Item" msgstr "Instalado em Item de Estoque" -#: templates/js/translated/stock.js:1741 +#: templates/js/translated/stock.js:1777 msgid "Assigned to Sales Order" msgstr "Atribuir para o Pedido de Venda" -#: templates/js/translated/stock.js:1747 +#: templates/js/translated/stock.js:1783 msgid "No stock location set" msgstr "Sem local de estoque definido" -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1839 msgid "Change stock status" msgstr "Mudar estado do estoque" -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1848 msgid "Merge stock" msgstr "Mesclar estoque" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:1897 msgid "Delete stock" msgstr "Excluir estoque" -#: templates/js/translated/stock.js:1916 +#: templates/js/translated/stock.js:1952 msgid "stock items" msgstr "itens de estoque" -#: templates/js/translated/stock.js:1921 +#: templates/js/translated/stock.js:1957 msgid "Scan to location" msgstr "Escanear para local" -#: templates/js/translated/stock.js:1932 +#: templates/js/translated/stock.js:1968 msgid "Stock Actions" msgstr "Ações de Estoque" -#: templates/js/translated/stock.js:1976 +#: templates/js/translated/stock.js:2012 msgid "Load installed items" msgstr "Carregar itens instalados" -#: templates/js/translated/stock.js:2054 +#: templates/js/translated/stock.js:2090 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2059 +#: templates/js/translated/stock.js:2095 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2062 +#: templates/js/translated/stock.js:2098 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2065 +#: templates/js/translated/stock.js:2101 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2067 +#: templates/js/translated/stock.js:2103 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2069 +#: templates/js/translated/stock.js:2105 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2072 +#: templates/js/translated/stock.js:2108 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2074 +#: templates/js/translated/stock.js:2110 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2114 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2080 +#: templates/js/translated/stock.js:2116 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2085 +#: templates/js/translated/stock.js:2121 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2087 +#: templates/js/translated/stock.js:2123 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2089 +#: templates/js/translated/stock.js:2125 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2129 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2258 +#: templates/js/translated/stock.js:2294 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2305 +#: templates/js/translated/stock.js:2341 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2433 +#: templates/js/translated/stock.js:2469 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2573 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2692 +#: templates/js/translated/stock.js:2728 msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2810 +#: templates/js/translated/stock.js:2846 msgid "Details" msgstr "Detalhes" -#: templates/js/translated/stock.js:2814 +#: templates/js/translated/stock.js:2850 msgid "No changes" msgstr "Nenhuma mudança" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:2862 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2848 +#: templates/js/translated/stock.js:2884 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2865 +#: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2880 +#: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2897 +#: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2914 +#: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3005 msgid "Added" msgstr "Adicionado" -#: templates/js/translated/stock.js:2977 +#: templates/js/translated/stock.js:3013 msgid "Removed" msgstr "Removido" -#: templates/js/translated/stock.js:3049 +#: templates/js/translated/stock.js:3085 msgid "No installed items" msgstr "Nenhum item instalado" -#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139 +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:3161 +#: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:3182 +#: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:3183 +#: 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:3185 +#: templates/js/translated/stock.js:3221 msgid "The Stock Item links to a Part which is the BOM for this Stock Item" msgstr "O Item de Estoque conecta a uma peça que é um BOM deste Item de Estoque" -#: templates/js/translated/stock.js:3186 +#: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:3187 +#: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:3188 +#: 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:3201 +#: templates/js/translated/stock.js:3237 msgid "Select part to install" msgstr "" -#: templates/js/translated/stock.js:3264 +#: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" msgstr "" -#: templates/js/translated/stock.js:3277 +#: templates/js/translated/stock.js:3313 msgid "Selected stock items" msgstr "" -#: templates/js/translated/stock.js:3281 +#: templates/js/translated/stock.js:3317 msgid "Change Stock Status" msgstr "" diff --git a/InvenTree/locale/ru/LC_MESSAGES/django.po b/InvenTree/locale/ru/LC_MESSAGES/django.po index 07d58a56d0..e1e2afc209 100644 --- a/InvenTree/locale/ru/LC_MESSAGES/django.po +++ b/InvenTree/locale/ru/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 04:05+0000\n" -"PO-Revision-Date: 2024-02-28 07:23\n" +"POT-Creation-Date: 2024-03-19 01:26+0000\n" +"PO-Revision-Date: 2024-03-19 11:52\n" "Last-Translator: \n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -28,22 +28,22 @@ msgstr "У пользователя недостаточно прав для п #: InvenTree/conversion.py:160 #, python-brace-format msgid "Invalid unit provided ({unit})" -msgstr "" +msgstr "Предоставлено недопустимое значение ({unit})" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "Значение не указано" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "Невозможно преобразовать {original} в {unit}" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" msgstr "Недопустимое количество" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" msgstr "Недопустимое количество ({exc})" @@ -64,18 +64,18 @@ msgstr "Введите дату" #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 #: templates/js/translated/return_order.js:776 #: templates/js/translated/sales_order.js:1067 #: templates/js/translated/sales_order.js:1982 -#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 msgid "Notes" msgstr "Записи" @@ -132,42 +132,42 @@ msgstr "Указанный домен электронной почты не у msgid "Registration is disabled." msgstr "Регистрация отключена." -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "недопустимое количество" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "Пустая строка серийного номера" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "Повторяющийся серийный номер" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "Недопустимый диапазон группы: {group}" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "Диапазон группы {group} превышает допустимое количество ({expected_quantity})" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "Неверная последовательность групп: {group}" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "Серийных номеров не найдено" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "Число уникальных серийных номеров ({s}) должно соответствовать количеству ({q})" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "Удалить HTML теги из этого значения" @@ -203,131 +203,135 @@ msgstr "Удаленный сервер вернул пустой ответ" msgid "Supplied URL is not a valid image file" msgstr "Предоставленный URL не является допустимым файлом изображения" -#: InvenTree/locales.py:16 +#: InvenTree/locales.py:18 msgid "Bulgarian" msgstr "Болгарский" -#: InvenTree/locales.py:17 +#: InvenTree/locales.py:19 msgid "Czech" msgstr "Чешский" -#: InvenTree/locales.py:18 +#: InvenTree/locales.py:20 msgid "Danish" msgstr "Датский" -#: InvenTree/locales.py:19 +#: InvenTree/locales.py:21 msgid "German" msgstr "Немецкий" -#: InvenTree/locales.py:20 +#: InvenTree/locales.py:22 msgid "Greek" msgstr "Греческий" -#: InvenTree/locales.py:21 +#: InvenTree/locales.py:23 msgid "English" msgstr "Английский" -#: InvenTree/locales.py:22 +#: InvenTree/locales.py:24 msgid "Spanish" msgstr "Испанский" -#: InvenTree/locales.py:23 +#: InvenTree/locales.py:25 msgid "Spanish (Mexican)" msgstr "Испанский (Мексика)" -#: InvenTree/locales.py:24 +#: InvenTree/locales.py:26 msgid "Farsi / Persian" msgstr "Фарси / Персидский" -#: InvenTree/locales.py:25 +#: InvenTree/locales.py:27 msgid "Finnish" msgstr "Финский" -#: InvenTree/locales.py:26 +#: InvenTree/locales.py:28 msgid "French" msgstr "Французский" -#: InvenTree/locales.py:27 +#: InvenTree/locales.py:29 msgid "Hebrew" msgstr "Иврит" -#: InvenTree/locales.py:28 +#: InvenTree/locales.py:30 msgid "Hindi" msgstr "Хинди" -#: InvenTree/locales.py:29 +#: InvenTree/locales.py:31 msgid "Hungarian" msgstr "Венгерский" -#: InvenTree/locales.py:30 +#: InvenTree/locales.py:32 msgid "Italian" msgstr "Итальянский" -#: InvenTree/locales.py:31 +#: InvenTree/locales.py:33 msgid "Japanese" msgstr "Японский" -#: InvenTree/locales.py:32 +#: InvenTree/locales.py:34 msgid "Korean" msgstr "Корейский" -#: InvenTree/locales.py:33 +#: InvenTree/locales.py:35 +msgid "Latvian" +msgstr "" + +#: InvenTree/locales.py:36 msgid "Dutch" msgstr "Голландский" -#: InvenTree/locales.py:34 +#: InvenTree/locales.py:37 msgid "Norwegian" msgstr "Норвежский" -#: InvenTree/locales.py:35 +#: InvenTree/locales.py:38 msgid "Polish" msgstr "Польский" -#: InvenTree/locales.py:36 +#: InvenTree/locales.py:39 msgid "Portuguese" msgstr "Португальский" -#: InvenTree/locales.py:37 +#: InvenTree/locales.py:40 msgid "Portuguese (Brazilian)" msgstr "Португальский (Бразильский диалект)" -#: InvenTree/locales.py:38 +#: InvenTree/locales.py:41 msgid "Russian" msgstr "Русский" -#: InvenTree/locales.py:39 +#: InvenTree/locales.py:42 msgid "Slovak" msgstr "Словацкий" -#: InvenTree/locales.py:40 +#: InvenTree/locales.py:43 msgid "Slovenian" msgstr "Словенский" -#: InvenTree/locales.py:41 +#: InvenTree/locales.py:44 msgid "Serbian" msgstr "Сербский" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:45 msgid "Swedish" msgstr "Шведский" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:46 msgid "Thai" msgstr "Тайский" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:47 msgid "Turkish" msgstr "Турецкий" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:48 msgid "Vietnamese" msgstr "Вьетнамский" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:49 msgid "Chinese (Simplified)" msgstr "Китайский (Упрощенный)" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:50 msgid "Chinese (Traditional)" msgstr "Китайский (Традиционный)" @@ -345,7 +349,7 @@ msgstr "EMail" #: InvenTree/models.py:107 msgid "Error running plugin validation" -msgstr "" +msgstr "Ошибка запуска проверки плагина" #: InvenTree/models.py:162 msgid "Metadata must be a python dict object" @@ -391,7 +395,7 @@ msgstr "Файл не найден" msgid "Missing external link" msgstr "Отсутствует внешняя ссылка" -#: InvenTree/models.py:559 stock/models.py:2446 +#: InvenTree/models.py:559 stock/models.py:2449 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -401,7 +405,7 @@ msgstr "Вложения" msgid "Select file to attach" msgstr "Выберите файл для вложения" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -432,13 +436,13 @@ msgstr "Комментарий" msgid "File comment" msgstr "Комментарий к файлу" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:3000 users/models.py:100 +#: templates/js/translated/stock.js:3036 users/models.py:100 msgid "User" msgstr "Пользователь" @@ -479,10 +483,10 @@ msgstr "Повторяющиеся имена не могут существов msgid "Invalid choice" msgstr "Неверный выбор" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -495,7 +499,7 @@ msgstr "Неверный выбор" #: templates/js/translated/company.js:1155 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Название" @@ -506,10 +510,10 @@ msgstr "Название" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -523,7 +527,7 @@ msgstr "Название" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -531,8 +535,8 @@ msgstr "Название" #: templates/js/translated/return_order.js:314 #: templates/js/translated/sales_order.js:802 #: templates/js/translated/sales_order.js:1812 -#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021 -#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "Описание" @@ -545,7 +549,7 @@ msgid "parent" msgstr "родитель" #: InvenTree/models.py:916 templates/js/translated/part.js:2794 -#: templates/js/translated/stock.js:2721 +#: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Путь" @@ -581,7 +585,7 @@ msgstr "Ошибка сервера" msgid "An error has been logged by the server." msgstr "Сервер зарегистрировал ошибку." -#: InvenTree/serializers.py:62 part/models.py:4134 +#: InvenTree/serializers.py:62 part/models.py:4143 msgid "Must be a valid number" msgstr "Должно быть действительным номером" @@ -596,89 +600,89 @@ msgstr "Валюта" msgid "Select currency from available options" msgstr "Выберите валюту из доступных вариантов" -#: InvenTree/serializers.py:436 +#: InvenTree/serializers.py:441 msgid "You do not have permission to change this user role." msgstr "У вас недостаточно прав для изменения роли этого пользователя." -#: InvenTree/serializers.py:448 +#: InvenTree/serializers.py:453 msgid "Only superusers can create new users" msgstr "Только суперпользователи могут создавать новых пользователей" -#: InvenTree/serializers.py:467 +#: InvenTree/serializers.py:472 msgid "Your account has been created." msgstr "Ваша учётная запись была успешно создана." -#: InvenTree/serializers.py:469 +#: InvenTree/serializers.py:474 msgid "Please use the password reset function to login" -msgstr "" +msgstr "Пожалуйста, используйте функцию сброса пароля для входа" -#: InvenTree/serializers.py:476 +#: InvenTree/serializers.py:481 msgid "Welcome to InvenTree" msgstr "Добро пожаловать в InvenTree" -#: InvenTree/serializers.py:537 +#: InvenTree/serializers.py:542 msgid "Filename" msgstr "Имя файла" -#: InvenTree/serializers.py:571 +#: InvenTree/serializers.py:576 msgid "Invalid value" msgstr "Неверное значение" -#: InvenTree/serializers.py:591 +#: InvenTree/serializers.py:596 msgid "Data File" msgstr "Файл данных" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:597 msgid "Select data file for upload" msgstr "Выберите файл данных для загрузки" -#: InvenTree/serializers.py:609 +#: InvenTree/serializers.py:614 msgid "Unsupported file type" msgstr "Неподдерживаемый тип файла" -#: InvenTree/serializers.py:615 +#: InvenTree/serializers.py:620 msgid "File is too large" msgstr "Файл слишком большой" -#: InvenTree/serializers.py:636 +#: InvenTree/serializers.py:641 msgid "No columns found in file" msgstr "Столбцы в файле не найдены" -#: InvenTree/serializers.py:639 +#: InvenTree/serializers.py:644 msgid "No data rows found in file" msgstr "Строки данных в файле не найдены" -#: InvenTree/serializers.py:752 +#: InvenTree/serializers.py:757 msgid "No data rows provided" msgstr "Строки данных в файле не найдены" -#: InvenTree/serializers.py:755 +#: InvenTree/serializers.py:760 msgid "No data columns supplied" msgstr "Столбцы данных не предоставлены" -#: InvenTree/serializers.py:822 +#: InvenTree/serializers.py:827 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Отсутствует обязательный столбец: '{name}'" -#: InvenTree/serializers.py:831 +#: InvenTree/serializers.py:836 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Повторяющийся столбец: '{col}'" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:859 msgid "Remote Image" msgstr "Удаленное изображение" -#: InvenTree/serializers.py:855 +#: InvenTree/serializers.py:860 msgid "URL of remote image file" msgstr "ССЫЛКА файла изображения на удаленном сервере" -#: InvenTree/serializers.py:873 +#: InvenTree/serializers.py:878 msgid "Downloading images from remote URL is not enabled" msgstr "Загрузка изображений с удаленного URL-адреса не включена" -#: InvenTree/status.py:66 part/serializers.py:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "Проверка фонового работника не удалась" @@ -818,7 +822,7 @@ msgstr "Отделить от родительского элемента" msgid "Split child item" msgstr "Разбить дочерний элемент" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 msgid "Merged stock items" msgstr "Объединенные складские позиции" @@ -838,7 +842,7 @@ msgstr "Продукция заказа на производство завер msgid "Build order output rejected" msgstr "Продукция заказа на производство отклонена" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 msgid "Consumed by build order" msgstr "Поглощен заказом на производство" @@ -938,14 +942,14 @@ msgstr "О программе InvenTree" msgid "Build must be cancelled before it can be deleted" msgstr "Заказ на производство должен быть отменен перед удалением" -#: build/api.py:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "Расходники" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -960,7 +964,7 @@ msgid "Tracked" msgstr "Отслеживается" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -985,7 +989,7 @@ msgstr "Доступно" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "Заказ на производство" @@ -1014,7 +1018,7 @@ msgstr "Ссылка на заказ на производство" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1044,11 +1048,11 @@ msgstr "Заказ на производство, которому принад #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1059,7 +1063,7 @@ msgstr "Заказ на производство, которому принад #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:267 stock/serializers.py:689 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1086,9 +1090,9 @@ msgstr "Заказ на производство, которому принад #: templates/js/translated/sales_order.js:1598 #: templates/js/translated/sales_order.js:1796 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960 -#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054 -#: templates/js/translated/stock.js:3200 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 msgid "Part" msgstr "Деталь" @@ -1146,8 +1150,8 @@ msgstr "Статус заказа на производство" msgid "Build status code" msgstr "Код статуса заказа на производство" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Код партии" @@ -1242,53 +1246,53 @@ msgstr "Код проекта" msgid "Project code for this build order" msgstr "Код проекта для этого заказа на производство" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Заказ на производство {build} был завершен" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "Заказ на производство был завершен" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "Продукция не указана" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "Продукция уже произведена" -#: build/models.py:789 +#: build/models.py:805 msgid "Build output does not match Build Order" msgstr "Продукция не совпадает с заказом на производство" -#: build/models.py:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 msgid "Quantity must be greater than zero" msgstr "Количество должно быть больше нуля" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 msgid "Quantity cannot be greater than the output quantity" msgstr "Количество не может быть больше количества продукции" -#: build/models.py:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" -msgstr "" +msgstr "Сборка {serial} не прошла все необходимые тесты" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" msgstr "Объект производства" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1298,7 +1302,7 @@ msgstr "Объект производства" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:463 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1310,7 +1314,7 @@ msgstr "Объект производства" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1325,43 +1329,43 @@ msgstr "Объект производства" #: templates/js/translated/sales_order.js:1698 #: templates/js/translated/sales_order.js:1824 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 -#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985 -#: templates/js/translated/stock.js:3068 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "Количество" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" msgstr "Требуемое количество для заказа на производство" -#: build/models.py:1381 +#: build/models.py:1397 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "Элемент производства должен указать продукцию, как главную деталь помеченную как отслеживаемая" -#: build/models.py:1390 +#: build/models.py:1406 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "Резервируемое количество ({q}) не должно превышать доступное количество на складе ({a})" -#: build/models.py:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "Складская позиция перераспределена" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "Резервируемое количество должно быть больше нуля" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "Количество должно быть 1 для сериализованных запасов" -#: build/models.py:1473 +#: build/models.py:1489 msgid "Selected stock item does not match BOM line" msgstr "Выбранная складская позиция не соответствует позиции в BOM" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 @@ -1372,23 +1376,23 @@ msgstr "Выбранная складская позиция не соответ #: templates/js/translated/sales_order.js:1605 #: templates/js/translated/sales_order.js:1692 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 -#: templates/js/translated/stock.js:2941 +#: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "Складская позиция" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "Исходная складская позиция" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "Количество на складе для производства" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "Установить в" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "Целевая складская позиция" @@ -1425,8 +1429,8 @@ msgstr "Для отслеживаемых деталей должно быть msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "Требуется целое количество, так как материал содержит отслеживаемые детали" -#: build/serializers.py:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Серийные номера" @@ -1451,10 +1455,10 @@ msgstr "Следующие серийные номера уже существу msgid "A list of build outputs must be provided" msgstr "Необходимо представить список выхода деталей" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1466,8 +1470,8 @@ msgstr "Необходимо представить список выхода д #: templates/js/translated/sales_order.js:1627 #: templates/js/translated/sales_order.js:1706 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164 -#: templates/js/translated/stock.js:2835 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 msgid "Location" msgstr "Расположение" @@ -1493,16 +1497,16 @@ msgstr "Место хранения для завершенной продукц #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 #: templates/js/translated/purchase_order.js:1723 #: templates/js/translated/return_order.js:331 #: templates/js/translated/sales_order.js:819 -#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959 -#: templates/js/translated/stock.js:3084 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 msgid "Status" msgstr "Статус" @@ -1566,7 +1570,7 @@ msgstr "Подтвердите, что складские позиции не б msgid "Required stock has not been fully allocated" msgstr "Необходимые запасы не были полностью зарезервированы" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "Разрешить незавершенные производимые детали" @@ -1602,11 +1606,11 @@ msgstr "Позиция для производства" msgid "bom_item.part must point to the same part as the build order" msgstr "bom_item.part должна указывать на ту же часть, что и заказ на производство" -#: build/serializers.py:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1065 msgid "Item must be in stock" msgstr "Элемент должен быть в наличии" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Превышено доступное количество ({q})" @@ -1619,7 +1623,7 @@ msgstr "Продукция должна быть указан для резер msgid "Build output cannot be specified for allocation of untracked parts" msgstr "Продукция не может быть указана для резервирования не отслеживаемых частей" -#: build/serializers.py:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "Необходимо указать резервируемые элементы" @@ -1659,44 +1663,45 @@ msgstr "Необязательные элементы" msgid "Allocate optional BOM items to build order" msgstr "Зарезервировать необязательные позиции BOM для заказа на производство" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 #: stock/api.py:745 msgid "BOM Item" msgstr "Позиция BOM" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "Зарезервированные Запасы" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "В заказе" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "В производстве" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "Доступный запас" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "Необходимый запас для заказа на производство" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "Просроченный заказ сборки" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "Заказ на производство {bo} просрочен" @@ -1862,7 +1867,7 @@ msgstr "Завершенная продукция" #: templates/js/translated/pricing.js:929 #: templates/js/translated/sales_order.js:769 #: templates/js/translated/sales_order.js:992 -#: templates/js/translated/stock.js:2888 +#: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "Заказ на продажу" @@ -1920,8 +1925,8 @@ msgstr "Зарезервированные детали" #: templates/js/translated/build.js:1377 #: templates/js/translated/model_renderers.js:235 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153 -#: templates/js/translated/stock.js:3091 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" @@ -1990,27 +1995,31 @@ msgstr "" msgid "Order Parts" msgstr "Заказать детали" -#: build/templates/build/detail.html:210 +#: 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:214 +#: build/templates/build/detail.html:219 msgid "Create new build output" msgstr "Создать выход производства" -#: build/templates/build/detail.html:215 +#: build/templates/build/detail.html:220 msgid "New Build Output" msgstr "Новая продукция" -#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "Поглощенные Остатки" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "Завершенная продукция" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2026,15 +2035,15 @@ msgstr "Завершенная продукция" msgid "Attachments" msgstr "Файлы" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "Записи производства" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "Резервирование Завершено" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" msgstr "Все позиции были полностью зарезервированы" @@ -2098,7 +2107,7 @@ msgstr "Временная метка последнего обновления" #: common/models.py:105 msgid "Site URL is locked by configuration" -msgstr "" +msgstr "URL сайта заблокирован настройками" #: common/models.py:130 msgid "Unique project code" @@ -2112,1390 +2121,1414 @@ msgstr "Описание проекта" msgid "User or group responsible for this project" msgstr "Пользователь или группа, ответственные за этот проект" -#: common/models.py:737 +#: common/models.py:744 msgid "Settings key (must be unique - case insensitive)" msgstr "Ключ настроек (должен быть уникальным - не чувствителен к регистрам)" -#: common/models.py:741 +#: common/models.py:748 msgid "Settings value" msgstr "Значения настроек" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "Выбранное значение не является допустимым" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "Значение должно быть булевым" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "Значение должно быть целым числом" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "Строка ключа должна быть уникальной" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "Нет группы" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "Пустой домен не допускается." -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "Недопустимое доменное имя: {domain}" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "Нет плагина" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "Требуется перезапуск" -#: common/models.py:1231 +#: common/models.py:1238 msgid "A setting has been changed which requires a server restart" msgstr "Настройки были изменены, что требует перезапуска сервера" -#: common/models.py:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "Ожидаемые миграции" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "Количество ожидаемых миграций базы данных" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "Название сервера" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "Текстовое описание сервера" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "Название инстанса" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "Имя сервера в заголовке" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "Ограничить отображение `О...`" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "Показать `О...` только суперпользователям" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "Название компании" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "Внутреннее название компании" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "Базовая ссылка" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "Базовая ссылка для экземпляра сервера" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "Валюта по умолчанию" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "Выберите базовую валюту для расчета цены" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" -msgstr "" +msgstr "Интервал обновления курса валют" -#: common/models.py:1283 +#: common/models.py:1290 msgid "How often to update exchange rates (set to zero to disable)" msgstr "Как часто обновлять курс валют (установите \"ноль\", чтобы выключить)" -#: common/models.py:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "дней" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "Плагин обновления валют" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" -msgstr "" +msgstr "Модуль обновления валюты" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "Скачать по ссылке" -#: common/models.py:1298 +#: common/models.py:1305 msgid "Allow download of remote images and files from external URL" msgstr "Разрешить загрузку удаленных изображений и файлов по внешнему URL" -#: common/models.py:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "Ограничение размера загрузки" -#: common/models.py:1305 +#: common/models.py:1312 msgid "Maximum allowable download size for remote image" msgstr "Максимально допустимый размер загрузки для удалённого изображения" -#: common/models.py:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "User-Agent, используемый для загрузки из URL" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "Строгая проверка URL-адреса" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "Требуется спецификация схемы при проверке URL-адресов" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "Требуется подтверждение" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "Требовать явное подтверждение пользователя для определенного действия." -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "Глубина дерева" -#: common/models.py:1332 +#: common/models.py:1339 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "Глубина дерева по умолчанию для просмотра дерева. Глубокие уровни загружены по мере необходимости." -#: common/models.py:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "Интервал проверки обновлений" -#: common/models.py:1339 +#: common/models.py:1346 msgid "How often to check for updates (set to zero to disable)" msgstr "Как часто проверять наличие обновлений (установите ноль чтобы выключить)" -#: common/models.py:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "Автоматическое резервное копирование" -#: common/models.py:1346 +#: common/models.py:1353 msgid "Enable automatic backup of database and media files" msgstr "Включить автоматическое резервное копирование базы данных и медиа-файлов" -#: common/models.py:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "Интервал резервного копирования" -#: common/models.py:1352 +#: common/models.py:1359 msgid "Specify number of days between automated backup events" msgstr "Укажите количество дней между событиями автоматического резервного копирования" -#: common/models.py:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "Интервал удаления задачи" -#: common/models.py:1360 +#: common/models.py:1367 msgid "Background task results will be deleted after specified number of days" msgstr "Результаты фоновых задач будут удалены после указанного количества дней" -#: common/models.py:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "Интервал удаления журнала ошибок" -#: common/models.py:1369 +#: common/models.py:1376 msgid "Error logs will be deleted after specified number of days" msgstr "Журналы ошибок будут удалены после указанного количества дней" -#: common/models.py:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "Интервал удаления уведомления" -#: common/models.py:1378 +#: common/models.py:1385 msgid "User notifications will be deleted after specified number of days" msgstr "Уведомления пользователя будут удалены после указанного количества дней" -#: common/models.py:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Поддержка штрих-кодов" -#: common/models.py:1386 +#: common/models.py:1393 msgid "Enable barcode scanner support in the web interface" msgstr "Включить поддержку сканера штрих-кодов в веб-интерфейсе" -#: common/models.py:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "Задержка сканирования штрих-кода" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "Время задержки обработки штрих-кода" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "Поддержка веб-камер штрих-кодов" -#: common/models.py:1399 +#: common/models.py:1406 msgid "Allow barcode scanning via webcam in browser" msgstr "Разрешить сканирование штрих-кода через веб-камеру в браузере" -#: common/models.py:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "Ревизия детали" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" -msgstr "" +msgstr "Включить поле ревизии для элемента" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "" -#: common/models.py:1411 +#: common/models.py:1418 msgid "Regular expression pattern for matching Part IPN" msgstr "Шаблон регулярного выражения для сопоставления IPN детали" -#: common/models.py:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "Разрешить повторяющиеся IPN" -#: common/models.py:1415 +#: common/models.py:1422 msgid "Allow multiple parts to share the same IPN" -msgstr "" +msgstr "Разрешить нескольким элементам использовать один и тот же IPN" -#: common/models.py:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "Разрешить редактирование IPN" -#: common/models.py:1421 +#: common/models.py:1428 msgid "Allow changing the IPN value while editing a part" msgstr "Разрешить изменение значения IPN при редактировании детали" -#: common/models.py:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "Скопировать данные BOM детали" -#: common/models.py:1427 +#: common/models.py:1434 msgid "Copy BOM data by default when duplicating a part" msgstr "Копировать данные BOM по умолчанию при дублировании детали" -#: common/models.py:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "Скопировать данные параметров детали" -#: common/models.py:1433 +#: common/models.py:1440 msgid "Copy parameter data by default when duplicating a part" msgstr "Копировать данных параметров по умолчанию при дублировании детали" -#: common/models.py:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "Скопировать данные тестирования детали" -#: common/models.py:1439 +#: common/models.py:1446 msgid "Copy test data by default when duplicating a part" msgstr "Копировать данные тестирования по умолчанию при дублировании детали" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "Скопировать параметры по шаблону категории" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Copy category parameter templates when creating a part" msgstr "Копировать параметры по шаблону категории при создании детали" -#: common/models.py:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "Шаблон" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "По умолчанию детали являются шаблонами" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 msgid "Parts can be assembled from other components by default" msgstr "По умолчанию детали могут быть собраны из других компонентов" -#: common/models.py:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "Компонент" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Parts can be used as sub-components by default" msgstr "По умолчанию детали могут использоваться в качестве суб-компонентов" -#: common/models.py:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "Можно купить" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "По умолчанию детали являются отслеживаемыми" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "Можно продавать" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "Детали продаются по умолчанию" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "По умолчанию детали являются отслеживаемыми" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "Детали являются виртуальными по умолчанию" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" -msgstr "" +msgstr "Показать Импорт в просмотре" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "Показывать связанные детали" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" -msgstr "" +msgstr "Отображать связанные детали для элемента" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" -msgstr "" +msgstr "Начальные данные о запасах" -#: common/models.py:1505 +#: common/models.py:1512 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Исходные данные о поставщике" -#: common/models.py:1512 +#: common/models.py:1519 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1518 -msgid "Part Name Display Format" -msgstr "" - -#: common/models.py:1519 -msgid "Format to display the part name" -msgstr "" - #: common/models.py:1525 -msgid "Part Category Default Icon" -msgstr "" +msgid "Part Name Display Format" +msgstr "Формат отображения детали" #: common/models.py:1526 -msgid "Part category default icon (empty means no icon)" -msgstr "" +msgid "Format to display the part name" +msgstr "Формат для отображения имени детали" -#: common/models.py:1530 +#: common/models.py:1532 +msgid "Part Category Default Icon" +msgstr "Значок раздела по умолчанию" + +#: common/models.py:1533 +msgid "Part category default icon (empty means no icon)" +msgstr "Значок категории по умолчанию (пустой означает отсутствие значка)" + +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1532 +#: common/models.py:1539 msgid "If units are provided, parameter values must match the specified units" -msgstr "" +msgstr "Если введены единицы, значения параметра должны соответствовать указанным единицам измерения" -#: common/models.py:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" -msgstr "" +msgstr "Минимальные Цены Десятичные Значки" -#: common/models.py:1540 +#: common/models.py:1547 msgid "Minimum number of decimal places to display when rendering pricing data" -msgstr "" +msgstr "Минимальное количество десятичных знаков при отображении данных о ценах" -#: common/models.py:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" -msgstr "" +msgstr "Макс. Цены десятичные знаки" -#: common/models.py:1548 +#: common/models.py:1555 msgid "Maximum number of decimal places to display when rendering pricing data" -msgstr "" +msgstr "Минимальное количество десятичных знаков при отображении данных о ценах" -#: common/models.py:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" -msgstr "" +msgstr "Использовать цены поставщика" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" -msgstr "" +msgstr "Включить разницу цен поставщиков при расчетах цен" -#: common/models.py:1562 +#: common/models.py:1569 msgid "Purchase History Override" -msgstr "" +msgstr "Изменить историю покупки" -#: common/models.py:1564 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "Использовать цены из складских позиций" -#: common/models.py:1572 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "Использовать расценки из ручного ввода данных о запасах для расчета цен" -#: common/models.py:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "Возраст цен складских позиций" -#: common/models.py:1580 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "Исключить складские позиции старше указанного количества дней с расчёта цен" -#: common/models.py:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" -msgstr "" +msgstr "Использовать варианты цен" -#: common/models.py:1588 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" -msgstr "" +msgstr "Включить разницу цен поставщиков при расчетах цен" -#: common/models.py:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "Только Активные Варианты" -#: common/models.py:1595 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" -msgstr "" +msgstr "Использовать только активные запчасти для расчета стоимости варианта" -#: common/models.py:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "Интервал пересчета цен" -#: common/models.py:1603 -msgid "Number of days before part pricing is automatically updated" -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:1611 -msgid "Enable internal prices for parts" -msgstr "" - -#: common/models.py:1616 -msgid "Internal Price Override" -msgstr "" - #: common/models.py:1618 -msgid "If available, internal prices override price range calculations" -msgstr "" +msgid "Enable internal prices for parts" +msgstr "Разрешить внутренние цены для частей" -#: common/models.py:1624 -msgid "Enable label printing" -msgstr "" +#: common/models.py:1623 +msgid "Internal Price Override" +msgstr "Переопределение внутренней цены" #: common/models.py:1625 -msgid "Enable label printing from the web interface" -msgstr "" +msgid "If available, internal prices override price range calculations" +msgstr "При наличии внутренних цен переопределить ценовой диапазон" -#: common/models.py:1630 -msgid "Label Image DPI" -msgstr "" +#: common/models.py:1631 +msgid "Enable label printing" +msgstr "Включить печать этикеток" #: common/models.py:1632 -msgid "DPI resolution when generating image files to supply to label printing plugins" -msgstr "" +msgid "Enable label printing from the web interface" +msgstr "Включить печать этикеток из веб-интерфейса" -#: common/models.py:1638 +#: common/models.py:1637 +msgid "Label Image DPI" +msgstr "Изображение меток DPI" + +#: common/models.py:1639 +msgid "DPI resolution when generating image files to supply to label printing plugins" +msgstr "Разрешение DPI при создании файлов изображений для печати этикеток плагинов" + +#: common/models.py:1645 msgid "Enable Reports" msgstr "Включить отчеты" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" -msgstr "" +msgstr "Включить генерацию отчетов" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "Режим отладки" -#: common/models.py:1645 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" -msgstr "" +msgstr "Генерировать отчеты в режиме отладки (вывод HTML)" -#: common/models.py:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: 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:202 msgid "Page Size" msgstr "Размер страницы" -#: common/models.py:1651 -msgid "Default page size for PDF reports" -msgstr "" - -#: common/models.py:1656 -msgid "Enable Test Reports" -msgstr "" - -#: common/models.py:1657 -msgid "Enable generation of test reports" -msgstr "" - -#: common/models.py:1662 -msgid "Attach Test Reports" -msgstr "" - #: common/models.py:1664 +msgid "Default page size for PDF reports" +msgstr "Размер страницы по умолчанию для PDF отчетов" + +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1671 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "Серийные номера для складских позиций должны быть уникальными глобально" -#: common/models.py:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1677 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "Определяет поведение по умолчанию, когда складская позиция заканчивается" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1692 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "Шаблон для создания кодов партии по умолчанию для складских позиций" -#: common/models.py:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "Срок годности Запасов" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1704 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "Время Залежалости Запасов" -#: common/models.py:1711 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "Количество дней перед тем как складская единица будет считаться просроченной" -#: common/models.py:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "Использовать просроченные остатки в производстве" -#: common/models.py:1719 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "Разрешить использовать просроченные остатки в производстве" -#: common/models.py:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1725 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1731 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "Показать установленные складские позиции" -#: common/models.py:1736 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "Отображать установленные складские позиции в складских таблицах" -#: common/models.py:1741 +#: 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 "Build Order Reference Pattern" msgstr "Паттерн ссылки заказа на производство" -#: common/models.py:1743 +#: common/models.py:1764 msgid "Required pattern for generating Build Order reference field" msgstr "Поле требуемого паттерна для создания ссылки заказа на производство" -#: common/models.py:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "Включить заказы на возврат" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1757 +#: common/models.py:1778 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1765 +#: common/models.py:1786 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1773 +#: common/models.py:1794 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1780 +#: common/models.py:1801 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1787 +#: common/models.py:1808 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1795 +#: common/models.py:1816 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "Редактировать завершенные заказы на покупку" -#: common/models.py:1803 +#: common/models.py:1824 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1811 +#: common/models.py:1832 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "" -#: common/models.py:1825 +#: common/models.py:1846 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "Включить SSO" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1838 +#: common/models.py:1859 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1844 +#: common/models.py:1865 msgid "Email required" msgstr "Необходимо указать EMail" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1852 +#: common/models.py:1873 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "Написать дважды" -#: common/models.py:1859 +#: common/models.py:1880 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "Пароль дважды" -#: common/models.py:1865 +#: common/models.py:1886 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "Разрешенные домены" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "" -#: common/models.py:1879 +#: common/models.py:1900 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "Принудительное MFA" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "Пользователи должны использовать многофакторную безопасность." -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "Проверять плагины при запуске" -#: common/models.py:1892 +#: common/models.py:1913 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1929 +#: common/models.py:1950 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "" -#: common/models.py:1936 +#: common/models.py:1957 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1950 +#: common/models.py:1971 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1958 +#: common/models.py:1979 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "Исключить складские позиции во внешних местах хранения из инвентаризации" -#: common/models.py:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1966 +#: common/models.py:1987 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1974 +#: common/models.py:1995 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2029 common/models.py:2429 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2043 +#: common/models.py:2070 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2045 +#: common/models.py:2072 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2051 +#: common/models.py:2078 msgid "Show subscribed parts" msgstr "Показывать детали, на которые включены уведомления" -#: common/models.py:2052 +#: common/models.py:2079 msgid "Show subscribed parts on the homepage" msgstr "Показывать детали, на которые включены уведомления, на главной странице" -#: common/models.py:2057 +#: common/models.py:2084 msgid "Show subscribed categories" msgstr "Показывать категории, на которые включены уведомления" -#: common/models.py:2058 +#: common/models.py:2085 msgid "Show subscribed part categories on the homepage" msgstr "Показывать категории, на которые включены уведомления, на главной странице" -#: common/models.py:2063 +#: common/models.py:2090 msgid "Show latest parts" msgstr "Показывать последние детали" -#: common/models.py:2064 +#: common/models.py:2091 msgid "Show latest parts on the homepage" msgstr "Показывать последние детали на главной странице" -#: common/models.py:2069 +#: common/models.py:2096 msgid "Show unvalidated BOMs" msgstr "Показывать непроверенные BOMы" -#: common/models.py:2070 +#: common/models.py:2097 msgid "Show BOMs that await validation on the homepage" msgstr "Показывать BOMы, ожидающие проверки, на главной странице" -#: common/models.py:2075 +#: common/models.py:2102 msgid "Show recent stock changes" msgstr "Показывать изменившиеся складские запасы" -#: common/models.py:2076 +#: common/models.py:2103 msgid "Show recently changed stock items on the homepage" msgstr "Показывать складские позиции с недавно изменившимися запасами на главной странице" -#: common/models.py:2081 +#: common/models.py:2108 msgid "Show low stock" msgstr "Показывать низкие складские запасы" -#: common/models.py:2082 +#: common/models.py:2109 msgid "Show low stock items on the homepage" msgstr "Показывать складские позиции с низкими запасами на главной странице" -#: common/models.py:2087 +#: common/models.py:2114 msgid "Show depleted stock" msgstr "Показывать закончившиеся складские позиции" -#: common/models.py:2088 +#: common/models.py:2115 msgid "Show depleted stock items on the homepage" msgstr "Показывать закончившиеся складские позиции на главной странице" -#: common/models.py:2093 +#: common/models.py:2120 msgid "Show needed stock" msgstr "Показывать требуемые складские позиции" -#: common/models.py:2094 +#: common/models.py:2121 msgid "Show stock items needed for builds on the homepage" msgstr "Показывать требуемые для производства складские позиции на главной странице" -#: common/models.py:2099 +#: common/models.py:2126 msgid "Show expired stock" msgstr "Показывать складские позиции с истекшим сроком годности" -#: common/models.py:2100 +#: common/models.py:2127 msgid "Show expired stock items on the homepage" msgstr "Показывать складские позиции с истёкшим сроком годности на главной странице" -#: common/models.py:2105 +#: common/models.py:2132 msgid "Show stale stock" msgstr "Показывать залежалые складские позиции" -#: common/models.py:2106 +#: common/models.py:2133 msgid "Show stale stock items on the homepage" msgstr "Показывать складские позиции с истекающим сроком годности на главной странице" -#: common/models.py:2111 +#: common/models.py:2138 msgid "Show pending builds" msgstr "Показывать незавершённые производства" -#: common/models.py:2112 +#: common/models.py:2139 msgid "Show pending builds on the homepage" msgstr "Показывать незавершённые производства на главной странице" -#: common/models.py:2117 +#: common/models.py:2144 msgid "Show overdue builds" msgstr "Показывать просроченные производства" -#: common/models.py:2118 +#: common/models.py:2145 msgid "Show overdue builds on the homepage" msgstr "Показывать просроченные производства на главной странице" -#: common/models.py:2123 +#: common/models.py:2150 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2124 +#: common/models.py:2151 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2129 +#: common/models.py:2156 msgid "Show overdue POs" msgstr "Показать просроченные заказы на производство" -#: common/models.py:2130 +#: common/models.py:2157 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2135 +#: common/models.py:2162 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2136 +#: common/models.py:2163 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2141 +#: common/models.py:2168 msgid "Show overdue SOs" msgstr "Показать просроченные заказы на продажу" -#: common/models.py:2142 +#: common/models.py:2169 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2147 +#: common/models.py:2174 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2148 +#: common/models.py:2175 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2153 +#: common/models.py:2180 msgid "Show News" msgstr "Показывать новости" -#: common/models.py:2154 +#: common/models.py:2181 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2159 +#: common/models.py:2186 msgid "Inline label display" msgstr "" -#: common/models.py:2161 +#: common/models.py:2188 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2167 +#: common/models.py:2194 msgid "Default label printer" msgstr "" -#: common/models.py:2169 +#: common/models.py:2196 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2175 +#: common/models.py:2202 msgid "Inline report display" msgstr "" -#: common/models.py:2177 +#: common/models.py:2204 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2183 +#: common/models.py:2210 msgid "Search Parts" msgstr "Поиск Деталей" -#: common/models.py:2184 +#: common/models.py:2211 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2189 +#: common/models.py:2216 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2190 +#: common/models.py:2217 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2195 +#: common/models.py:2222 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2196 +#: common/models.py:2223 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2201 +#: common/models.py:2228 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2202 +#: common/models.py:2229 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2207 +#: common/models.py:2234 msgid "Search Categories" msgstr "" -#: common/models.py:2208 +#: common/models.py:2235 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2213 +#: common/models.py:2240 msgid "Search Stock" msgstr "Поиск Запасов" -#: common/models.py:2214 +#: common/models.py:2241 msgid "Display stock items in search preview window" msgstr "Отображать складские позиции в окне предварительного просмотра поиска" -#: common/models.py:2219 +#: common/models.py:2246 msgid "Hide Unavailable Stock Items" msgstr "Скрыть недоступные складские позиции" -#: common/models.py:2221 +#: common/models.py:2248 msgid "Exclude stock items which are not available from the search preview window" msgstr "Исключить недоступные складские позиции из окна предварительного просмотра поиска" -#: common/models.py:2227 +#: common/models.py:2254 msgid "Search Locations" msgstr "Поиск мест хранения" -#: common/models.py:2228 +#: common/models.py:2255 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2233 +#: common/models.py:2260 msgid "Search Companies" msgstr "Поиск компаний" -#: common/models.py:2234 +#: common/models.py:2261 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2239 +#: common/models.py:2266 msgid "Search Build Orders" msgstr "Поиск заказов на производство" -#: common/models.py:2240 +#: common/models.py:2267 msgid "Display build orders in search preview window" msgstr "Отображать заказы на производство в окне предварительного просмотра поиска" -#: common/models.py:2245 +#: common/models.py:2272 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2246 +#: common/models.py:2273 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2251 +#: common/models.py:2278 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2253 +#: common/models.py:2280 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2259 +#: common/models.py:2286 msgid "Search Sales Orders" msgstr "Поиск заказов на продажу" -#: common/models.py:2260 +#: common/models.py:2287 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2265 +#: common/models.py:2292 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2267 +#: common/models.py:2294 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2273 +#: common/models.py:2300 msgid "Search Return Orders" msgstr "Поиск заказов на возврат" -#: common/models.py:2274 +#: common/models.py:2301 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2279 +#: common/models.py:2306 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2281 +#: common/models.py:2308 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2287 +#: common/models.py:2314 msgid "Search Preview Results" msgstr "" -#: common/models.py:2289 +#: common/models.py:2316 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2295 +#: common/models.py:2322 msgid "Regex Search" msgstr "Поиск по Regex" -#: common/models.py:2296 +#: common/models.py:2323 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2301 +#: common/models.py:2328 msgid "Whole Word Search" msgstr "" -#: common/models.py:2302 +#: common/models.py:2329 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2307 +#: common/models.py:2334 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2308 +#: common/models.py:2335 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2313 +#: common/models.py:2340 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2314 +#: common/models.py:2341 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2319 +#: common/models.py:2346 msgid "Fixed Navbar" msgstr "Фиксированная панель навигации" -#: common/models.py:2320 +#: common/models.py:2347 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2325 +#: common/models.py:2352 msgid "Date Format" msgstr "Формат даты" -#: common/models.py:2326 +#: common/models.py:2353 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2366 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Планирование деталей" -#: common/models.py:2340 +#: common/models.py:2367 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2372 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Инвентаризация детали" -#: common/models.py:2347 +#: common/models.py:2374 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2353 +#: common/models.py:2380 msgid "Table String Length" msgstr "" -#: common/models.py:2355 +#: common/models.py:2382 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2361 +#: common/models.py:2388 msgid "Default part label template" msgstr "" -#: common/models.py:2362 +#: common/models.py:2389 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2367 +#: common/models.py:2394 msgid "Default stock item template" msgstr "Шаблон складской позиции по умолчанию" -#: common/models.py:2369 +#: common/models.py:2396 msgid "The stock item label template to be automatically selected" msgstr "Шаблон метки складской позиции для автоматического выбора" -#: common/models.py:2375 +#: common/models.py:2402 msgid "Default stock location label template" msgstr "" -#: common/models.py:2377 +#: common/models.py:2404 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2383 +#: common/models.py:2410 msgid "Receive error reports" msgstr "" -#: common/models.py:2384 +#: common/models.py:2411 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2389 +#: common/models.py:2416 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2417 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2460 msgid "Price break quantity" msgstr "" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3503,23 +3536,23 @@ msgstr "" msgid "Price" msgstr "Цена" -#: common/models.py:2441 +#: common/models.py:2468 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2639 common/models.py:2824 msgid "Endpoint" msgstr "Конечная точка" -#: common/models.py:2613 +#: common/models.py:2640 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2623 +#: common/models.py:2650 msgid "Name for this webhook" msgstr "" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3529,101 +3562,101 @@ msgstr "" msgid "Active" msgstr "Активный" -#: common/models.py:2627 +#: common/models.py:2654 msgid "Is this webhook active" msgstr "" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2670 users/models.py:148 msgid "Token" msgstr "Токен" -#: common/models.py:2644 +#: common/models.py:2671 msgid "Token for access" msgstr "Токен для доступа" -#: common/models.py:2652 +#: common/models.py:2679 msgid "Secret" msgstr "Секрет" -#: common/models.py:2653 +#: common/models.py:2680 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2761 +#: common/models.py:2788 msgid "Message ID" msgstr "ID Сообщения" -#: common/models.py:2762 +#: common/models.py:2789 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2770 +#: common/models.py:2797 msgid "Host" msgstr "Хост" -#: common/models.py:2771 +#: common/models.py:2798 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2779 +#: common/models.py:2806 msgid "Header" msgstr "Заголовок" -#: common/models.py:2780 +#: common/models.py:2807 msgid "Header of this message" msgstr "" -#: common/models.py:2787 +#: common/models.py:2814 msgid "Body" msgstr "Тело" -#: common/models.py:2788 +#: common/models.py:2815 msgid "Body of this message" msgstr "" -#: common/models.py:2798 +#: common/models.py:2825 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2803 +#: common/models.py:2830 msgid "Worked on" msgstr "Работал над" -#: common/models.py:2804 +#: common/models.py:2831 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2930 +#: common/models.py:2957 msgid "Id" msgstr "Код" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2959 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "Заголовок" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2963 templates/js/translated/news.js:60 msgid "Published" msgstr "Опубликовано" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2965 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2967 templates/js/translated/news.js:52 msgid "Summary" msgstr "Итого" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Read" msgstr "Читать" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Was this news item read?" msgstr "" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2987 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3633,31 +3666,31 @@ msgstr "" msgid "Image" msgstr "Изображение" -#: common/models.py:2960 +#: common/models.py:2987 msgid "Image file" msgstr "Файл изображения" -#: common/models.py:3002 +#: common/models.py:3029 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3021 +#: common/models.py:3048 msgid "Unit name" msgstr "Название единицы" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "Символ" -#: common/models.py:3029 +#: common/models.py:3056 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "Определение" -#: common/models.py:3037 +#: common/models.py:3064 msgid "Unit definition" msgstr "" @@ -3961,7 +3994,7 @@ msgid "Link to address information (external)" msgstr "" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Базовая деталь" @@ -3972,7 +4005,7 @@ msgstr "Выберите деталь" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3987,7 +4020,7 @@ msgid "Select manufacturer" msgstr "Выберите производителя" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4022,9 +4055,9 @@ msgstr "Наименование параметра" #: company/models.py:615 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2438 templates/js/translated/company.js:1156 +#: stock/models.py:2441 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1519 msgid "Value" msgstr "Значение" @@ -4033,7 +4066,7 @@ msgid "Parameter value" msgstr "Значение параметра" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4059,7 +4092,7 @@ msgstr "" #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4076,7 +4109,7 @@ msgstr "Поставщик" msgid "Select supplier" msgstr "Выберите поставщика" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "Код поставщика" @@ -4093,13 +4126,13 @@ msgid "Supplier part description" msgstr "" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:579 msgid "Note" msgstr "Запись" @@ -4112,10 +4145,10 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 -#: templates/js/translated/stock.js:2387 +#: templates/js/translated/stock.js:2423 msgid "Packaging" msgstr "Упаковка" @@ -4157,7 +4190,7 @@ msgstr "" msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "Валюта по умолчанию для этого поставщика" @@ -4218,13 +4251,13 @@ msgstr "Удалить изображение" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1100 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 #: templates/js/translated/return_order.js:296 #: templates/js/translated/sales_order.js:784 -#: templates/js/translated/stock.js:2923 +#: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:804 msgid "Customer" msgstr "Покупатель" @@ -4429,8 +4462,9 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "Поставщики" @@ -4482,7 +4516,7 @@ msgstr "Адреса" #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2243 +#: templates/js/translated/stock.js:2279 msgid "Supplier Part" msgstr "Деталь поставщика" @@ -4528,7 +4562,7 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4577,15 +4611,17 @@ msgstr "" msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 -#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:193 msgid "Stock Items" msgstr "Складские позиции" @@ -4639,8 +4675,8 @@ msgstr "Метка" msgid "Label template file" msgstr "" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "Включено" @@ -4665,7 +4701,7 @@ msgstr "Высота [мм]" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "Шаблон имени файла" @@ -4679,8 +4715,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "Фильтры" @@ -4821,7 +4857,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1674 -#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "Заказ на закупку" @@ -4830,7 +4866,7 @@ msgstr "Заказ на закупку" #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 -#: templates/js/translated/stock.js:2905 +#: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "Заказ на возврат" @@ -4838,11 +4874,11 @@ msgstr "Заказ на возврат" msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "Валюта Заказа" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -5029,9 +5065,9 @@ msgstr "Получено" msgid "Number of items received" msgstr "" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2274 +#: templates/js/translated/stock.js:2310 msgid "Purchase Price" msgstr "Закупочная цена" @@ -5084,8 +5120,8 @@ msgstr "Проверн" msgid "User who checked this shipment" msgstr "" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "Отправление" @@ -5133,7 +5169,7 @@ msgstr "" msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "Количество должно быть 1 для сериализированных складских позиций" @@ -5207,159 +5243,159 @@ msgstr "" msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "Заказ не открыт" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "Валюта цены закупки" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "Позиция" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "Выберите место назначения для полученных элементов" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "Введите код партии для поступающих складских позиций" -#: order/serializers.py:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "Введите серийные номера для входящих складских позиций" -#: order/serializers.py:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Штрих-код" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "Сканированный штрих-код" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:610 +#: order/serializers.py:632 msgid "An integer quantity must be provided for trackable parts" msgstr "Для отслеживаемых деталей должно быть указано целочисленное количество" -#: order/serializers.py:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "Валюта цены продажи" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "Введите серийные номера для резервирования" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1677 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "" @@ -5733,7 +5769,7 @@ msgid "Pending Shipments" msgstr "Ожидающие отправления" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "Действия" @@ -5763,12 +5799,12 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "Код детали" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "Наименование детали" @@ -5780,12 +5816,12 @@ msgstr "Описание детали" #: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 -#: templates/js/translated/stock.js:1999 +#: templates/js/translated/stock.js:2035 msgid "IPN" msgstr "" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "Ревизия" @@ -5861,10 +5897,10 @@ msgstr "Имя родителя" msgid "Category Path" msgstr "Путь к категории" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -5885,17 +5921,17 @@ msgstr "ID Элемента BOM" msgid "Parent IPN" msgstr "Родительский IPN" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3897 msgid "Part IPN" msgstr "IPN детали" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "Минимальная цена" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5973,8 +6009,8 @@ msgstr "" msgid "This option must be selected" msgstr "Необходимо выбрать эту опцию" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5982,12 +6018,17 @@ msgstr "Необходимо выбрать эту опцию" msgid "Category" msgstr "Категория" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Место хранения по умолчанию" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "Общий запас" @@ -5995,7 +6036,7 @@ msgstr "Общий запас" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "Категория детали" @@ -6010,7 +6051,8 @@ msgstr "Категория детали" msgid "Default location for parts in this category" msgstr "Место хранения по умолчанию для деталей этой категории" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 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" @@ -6076,7 +6118,7 @@ msgstr "" msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3896 msgid "Part name" msgstr "Наименование детали" @@ -6358,7 +6400,7 @@ msgstr "" #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1732 -#: templates/js/translated/stock.js:2785 +#: templates/js/translated/stock.js:2821 msgid "Date" msgstr "Дата" @@ -6410,586 +6452,602 @@ msgstr "" msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 msgid "Test templates can only be created for trackable parts" msgstr "Шаблоны тестирования могут быть созданы только для отслеживаемых деталей" -#: part/models.py:3448 -msgid "Test with this name already exists for this part" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "Название теста" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "Введите имя для теста" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "Описание теста" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "Введите описание для этого теста" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Требуется" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "Требуется значение" -#: part/models.py:3496 +#: part/models.py:3505 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "" -#: part/models.py:3503 +#: part/models.py:3512 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "Название параметра" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "Чекбокс" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "Варианты" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "Родительская деталь" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "Шаблон параметра" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "Данные" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "Значение Параметра" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "Значение по умолчанию" -#: part/models.py:3847 +#: part/models.py:3856 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3885 +#: part/models.py:3894 msgid "Part ID or part name" msgstr "Код или наименование детали" -#: part/models.py:3886 +#: part/models.py:3895 msgid "Unique part ID value" msgstr "" -#: part/models.py:3888 +#: part/models.py:3897 msgid "Part IPN value" msgstr "Значение IPN" -#: part/models.py:3889 +#: part/models.py:3898 msgid "Level" msgstr "Уровень" -#: part/models.py:3889 +#: part/models.py:3898 msgid "BOM level" msgstr "Уровень BOM" -#: part/models.py:3979 +#: part/models.py:3988 msgid "Select parent part" msgstr "Выберите родительскую деталь" -#: part/models.py:3989 +#: part/models.py:3998 msgid "Sub part" msgstr "Суб-деталь" -#: part/models.py:3990 +#: part/models.py:3999 msgid "Select part to be used in BOM" msgstr "Выбрать деталь для использования в BOM" -#: part/models.py:4001 +#: part/models.py:4010 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4007 +#: part/models.py:4016 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4013 +#: part/models.py:4022 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "Эта позиция - расходник. (она не отслеживается в заказах на производство)" -#: part/models.py:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4029 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Перерасход" -#: part/models.py:4021 +#: part/models.py:4030 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "Расчетное количество перерасходов производства (абсолютное или процентное)" -#: part/models.py:4028 +#: part/models.py:4037 msgid "BOM item reference" msgstr "" -#: part/models.py:4036 +#: part/models.py:4045 msgid "BOM item notes" msgstr "Записи о позиции BOM" -#: part/models.py:4042 +#: part/models.py:4051 msgid "Checksum" msgstr "Контрольная сумма" -#: part/models.py:4043 +#: part/models.py:4052 msgid "BOM line checksum" msgstr "" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4057 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "Проверен" -#: part/models.py:4049 +#: part/models.py:4058 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4063 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:4055 +#: part/models.py:4064 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4069 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Разрешить разновидности" -#: part/models.py:4061 +#: part/models.py:4070 msgid "Stock items for variant parts can be used for this BOM item" msgstr "Складские позиции для разновидностей деталей могут быть использованы для этой позиции BOM" -#: part/models.py:4146 stock/models.py:649 +#: part/models.py:4155 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" msgstr "Для отслеживаемых деталей количество должно быть целым числом" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4165 part/models.py:4167 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4298 +#: part/models.py:4307 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4319 +#: part/models.py:4328 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4332 +#: part/models.py:4341 msgid "Parent BOM item" msgstr "Позиция BOM-родителя" -#: part/models.py:4340 +#: part/models.py:4349 msgid "Substitute part" msgstr "Замена детали" -#: part/models.py:4356 +#: part/models.py:4365 msgid "Part 1" msgstr "Часть 1" -#: part/models.py:4364 +#: part/models.py:4373 msgid "Part 2" msgstr "Часть 2" -#: part/models.py:4365 +#: part/models.py:4374 msgid "Select Related Part" msgstr "Выберите связанную часть" -#: part/models.py:4384 +#: part/models.py:4393 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4389 +#: part/models.py:4398 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 msgid "Purchase currency of this stock item" msgstr "Валюта закупки складской позиции" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "Не выбрана ни одна деталь" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "Выберите категорию" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "Оригинальная деталь" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "Копировать Изображение" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:432 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "Скопировать BOM" -#: part/serializers.py:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "Скопировать параметры" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "Копировать Записи" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "Скопировать записи из оригинальной детали" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:480 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "Выберите поставщика (или оставьте поле пустым, чтобы пропустить)" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "Выберите поставщика (или оставьте поле пустым, чтобы пропустить)" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "Код производителя" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "Дублировать деталь" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "Начальный запас" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "Копировать параметры категории" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" msgstr "Копировать шаблоны параметров из выбранной категории деталей" -#: part/serializers.py:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "Существующее изображение" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1104 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1078 +#: part/serializers.py:1114 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1088 +#: part/serializers.py:1124 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "Исключить складские позиции в внешних местах хранения" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "Создать отчет" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "Обновить детали" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "Обновить" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1647 +#: part/serializers.py:1693 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1659 +#: part/serializers.py:1705 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1694 +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "Подходящая деталь не найдена" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "Некорректное количество" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "" @@ -7147,7 +7205,7 @@ msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/stock.js:2179 users/models.py:191 +#: templates/js/translated/stock.js:2215 users/models.py:191 msgid "Stocktake" msgstr "Инвентаризация" @@ -7221,7 +7279,7 @@ msgid "Validate BOM" msgstr "Проверить BOM" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "Добавить элемент BOM" @@ -7405,7 +7463,7 @@ msgstr "Зарезервировано заказами на производс msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "Можно произвести" @@ -7509,7 +7567,7 @@ msgstr "Разновидности" #: templates/InvenTree/settings/sidebar.html:51 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 -#: templates/js/translated/stock.js:2033 templates/navbar.html:31 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 msgid "Stock" msgstr "Склад" @@ -7555,7 +7613,7 @@ msgstr "Редактировать" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 -#: templates/js/translated/stock.js:2209 +#: templates/js/translated/stock.js:2245 msgid "Last Updated" msgstr "Последнее обновление" @@ -7999,7 +8057,7 @@ msgstr "Граница" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "Альбомная" @@ -8307,16 +8365,16 @@ msgstr "" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "Отчет тестирования" @@ -8336,103 +8394,111 @@ msgstr "Правовая информация" msgid "Letter" msgstr "Письмо" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "Название шаблона" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "Файл шаблона отчёта" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "Включить результаты тестирования для складских позиций установленных в производимую деталь" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "Фильтры производства" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "Фильтры запросов производства (разделенные запятыми список ключей=значения пар ключей" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "Фильтры деталей" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" msgstr "Сниппет" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" msgstr "Объект" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8499,12 +8565,12 @@ msgid "Test Results" msgstr "Результаты тестирования" #: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1492 msgid "Test" msgstr "Тестирование" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Result" msgstr "Результат" @@ -8531,7 +8597,7 @@ msgstr "Установленные элементы" #: report/templates/report/inventree_test_report_base.html:168 #: stock/admin.py:162 templates/js/translated/stock.js:700 -#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110 msgid "Serial" msgstr "Серийный номер" @@ -8615,7 +8681,7 @@ msgstr "" #: stock/admin.py:256 stock/models.py:886 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2193 users/models.py:113 +#: templates/js/translated/stock.js:2229 users/models.py:113 msgid "Expiry Date" msgstr "Истекает" @@ -8713,7 +8779,7 @@ msgstr "Выберите владельца" msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "Складские позиции не могут находиться в структурных местах хранения, но могут находиться в дочерних местах хранения." -#: stock/models.py:174 templates/js/translated/stock.js:2745 +#: stock/models.py:174 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "Внешний" @@ -8722,7 +8788,7 @@ msgstr "Внешний" msgid "This is an external stock location" msgstr "" -#: stock/models.py:181 templates/js/translated/stock.js:2754 +#: stock/models.py:181 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "Тип Места Хранения" @@ -8739,7 +8805,7 @@ msgstr "Вы не можете сделать это место хранение msgid "Stock items cannot be located into structural stock locations!" msgstr "Складские позиции не могут находиться в структурных местах хранения!" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:290 msgid "Stock item cannot be created for virtual parts" msgstr "Складская позиция не может быть создана для виртуальных деталей" @@ -8784,7 +8850,7 @@ msgstr "Выберите соответствующего поставщика msgid "Where is this stock item located?" msgstr "Где находиться эта складская позиция?" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1351 msgid "Packaging this stock item is stored in" msgstr "Упаковка этой складской позиции хранится в" @@ -8796,7 +8862,7 @@ msgstr "" msgid "Serial number for this item" msgstr "" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1334 msgid "Batch code for this stock item" msgstr "Код партии для этой складской позиции" @@ -8873,7 +8939,7 @@ msgstr "" msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:529 msgid "Serial numbers already exist" msgstr "Серийные номера уже существуют" @@ -8905,9 +8971,9 @@ msgstr "Складская позиция в производстве" msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1240 msgid "Duplicate stock items" -msgstr "Дублировать складские позиции" +msgstr "Дублировать складские позици" #: stock/models.py:1643 msgid "Stock items must refer to the same part" @@ -8929,207 +8995,236 @@ msgstr "" msgid "Entry notes" msgstr "" -#: stock/models.py:2399 +#: stock/models.py:2402 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2405 +#: stock/models.py:2408 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Test result" msgstr "Результат тестирования" -#: stock/models.py:2439 +#: stock/models.py:2442 msgid "Test output value" msgstr "" -#: stock/models.py:2447 +#: stock/models.py:2450 msgid "Test result attachment" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2454 msgid "Test notes" msgstr "Записи Тестирования" -#: stock/serializers.py:96 +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "" + +#: stock/models.py:2463 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2469 +msgid "Started" +msgstr "" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:100 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:119 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 +#: stock/serializers.py:151 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:184 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:267 +#: stock/serializers.py:282 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:380 +#: stock/serializers.py:402 msgid "Purchase price of this stock item, per unit or pack" msgstr "Закупочная цена для этой складской позиции, за единицу или за упаковку" -#: stock/serializers.py:442 +#: stock/serializers.py:464 msgid "Enter number of stock items to serialize" msgstr "Введите количество складских позиций для сериализации" -#: stock/serializers.py:455 +#: stock/serializers.py:477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:462 +#: stock/serializers.py:484 msgid "Enter serial numbers for new items" msgstr "Введите серийные номера для новых элементов" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:480 +#: stock/serializers.py:502 msgid "Optional note field" msgstr "Опциональное поле записей" -#: stock/serializers.py:490 +#: stock/serializers.py:512 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:545 +#: stock/serializers.py:567 msgid "Select stock item to install" msgstr "Выберите складскую позицию для установки" -#: stock/serializers.py:552 +#: stock/serializers.py:574 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:553 +#: stock/serializers.py:575 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 msgid "Add transaction note (optional)" msgstr "Добавить запись к транзакции (необязательно)" -#: stock/serializers.py:566 +#: stock/serializers.py:588 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:596 msgid "Stock item is unavailable" msgstr "Складская позиция недоступна" -#: stock/serializers.py:581 +#: stock/serializers.py:607 msgid "Selected part is not in the Bill of Materials" msgstr "Выбранная деталь отсутствует в спецификации" -#: stock/serializers.py:593 +#: stock/serializers.py:620 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:628 +#: stock/serializers.py:655 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:663 +#: stock/serializers.py:690 msgid "Select part to convert stock item into" msgstr "Выберите деталь в которую будет преобразована складская позиция" -#: stock/serializers.py:676 +#: stock/serializers.py:703 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:693 +#: stock/serializers.py:720 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "Невозможно преобразовать складскую позицию с назначенной деталью поставщика" -#: stock/serializers.py:724 +#: stock/serializers.py:751 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:761 +#: stock/serializers.py:788 msgid "Select stock items to change status" msgstr "Выберите складские позиции для изменения статуса" -#: stock/serializers.py:767 +#: stock/serializers.py:794 msgid "No stock items selected" msgstr "Не выбрано ни одной складской позиции" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Места хранения" -#: stock/serializers.py:1036 +#: stock/serializers.py:1069 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1040 +#: stock/serializers.py:1073 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1044 +#: stock/serializers.py:1077 msgid "Item is allocated to a build order" msgstr "Элемент зарезервирован для заказа на производство" -#: stock/serializers.py:1068 +#: stock/serializers.py:1101 msgid "Customer to assign stock items" msgstr "Покупатель для назначения складских позиций" -#: stock/serializers.py:1074 +#: stock/serializers.py:1107 msgid "Selected company is not a customer" msgstr "Выбранная компания не является покупателем" -#: stock/serializers.py:1082 +#: stock/serializers.py:1115 msgid "Stock assignment notes" msgstr "Записи о назначенных запасах" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1125 stock/serializers.py:1379 msgid "A list of stock items must be provided" msgstr "Необходимо предоставить список складских позиций" -#: stock/serializers.py:1171 +#: stock/serializers.py:1204 msgid "Stock merging notes" msgstr "Записи о слияниях запасов" -#: stock/serializers.py:1176 +#: stock/serializers.py:1209 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1177 +#: stock/serializers.py:1210 msgid "Allow stock items with different supplier parts to be merged" msgstr "Разрешить слияние складских позиций с различными поставщиками" -#: stock/serializers.py:1182 +#: stock/serializers.py:1215 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1183 +#: stock/serializers.py:1216 msgid "Allow stock items with different status codes to be merged" msgstr "Разрешить слияние складских позиций с различными статусами" -#: stock/serializers.py:1193 +#: stock/serializers.py:1226 msgid "At least two stock items must be provided" msgstr "Необходимо предоставить как минимум 2 складские позиции" -#: stock/serializers.py:1260 +#: stock/serializers.py:1293 msgid "No Change" msgstr "" -#: stock/serializers.py:1289 +#: stock/serializers.py:1322 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1308 +#: stock/serializers.py:1341 msgid "Stock item status code" msgstr "Статус складской позиции" -#: stock/serializers.py:1336 +#: stock/serializers.py:1369 msgid "Stock transaction notes" msgstr "Записи о перемещениях запасов" @@ -9154,7 +9249,7 @@ msgstr "Данные тестов" msgid "Test Report" msgstr "Отчет тестирования" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 msgid "Delete Test Data" msgstr "Удалить данные тестирования" @@ -9170,15 +9265,15 @@ msgstr "Записи складской позиции" msgid "Installed Stock Items" msgstr "Установленные складские позиции" -#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 msgid "Install Stock Item" msgstr "Установить складскую позицию" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:274 msgid "Delete all test results for this stock item" msgstr "Удалить все результаты тестирования для этой складской позиции" -#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 msgid "Add Test Result" msgstr "Добавить Результат Тестирования" @@ -9201,17 +9296,17 @@ msgid "Stock adjustment actions" msgstr "" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 msgid "Count stock" msgstr "Установить запасы" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:1803 msgid "Add stock" msgstr "Добавить Остатки" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1776 +#: templates/js/translated/stock.js:1812 msgid "Remove stock" msgstr "Удалить запасы" @@ -9220,12 +9315,12 @@ msgid "Serialize stock" msgstr "Сериализовать запасы" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 msgid "Transfer stock" msgstr "Переместить запасы" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1884 msgid "Assign to customer" msgstr "" @@ -9364,7 +9459,7 @@ msgid "No stocktake performed" msgstr "" #: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1915 +#: templates/js/translated/stock.js:1951 msgid "stock item" msgstr "складская позиция" @@ -9469,7 +9564,7 @@ msgid "New Location" msgstr "Новое место хранения" #: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2536 +#: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "места хранения" @@ -10063,7 +10158,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:37 msgid "New Location Type" msgstr "" @@ -10074,7 +10169,7 @@ msgstr "Настройки пользователя" #: templates/InvenTree/settings/sidebar.html:9 msgid "Account" -msgstr "Аккуант" +msgstr "Учетная запись" #: templates/InvenTree/settings/sidebar.html:11 msgid "Display" @@ -10120,7 +10215,7 @@ msgstr "Настройки заказов на продажу" msgid "Stock Settings" msgstr "Настройки склада" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:33 msgid "Stock Location Types" msgstr "" @@ -10662,7 +10757,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "Требуемое кол-во" @@ -10676,7 +10771,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "Минимальное количество" @@ -11051,62 +11146,66 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "Расходник" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "Редактировать элемент BOM" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "Удалить элемент BOM" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "Просмотр BOM" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "Необходимая деталь" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "" @@ -11389,7 +11488,7 @@ msgstr "" #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 -#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 msgid "Select" msgstr "Выбрать" @@ -11401,7 +11500,7 @@ msgstr "" msgid "Progress" msgstr "Прогресс" -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006 +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" @@ -11449,29 +11548,29 @@ msgstr "Количество единиц" msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "Расходник" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "Отслеживаемый элемент" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "Запасы производства" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 msgid "Order stock" msgstr "Заказать запасы" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "Зарезервировать Остатки" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "" @@ -11804,15 +11903,15 @@ msgstr "Поиск" msgid "Clear input" msgstr "Очистить ввод" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "File Column" msgstr "Столбец Файла" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "Field Name" msgstr "Имя Поля" -#: templates/js/translated/forms.js:3087 +#: templates/js/translated/forms.js:3103 msgid "Select Columns" msgstr "Выбрать столбцы" @@ -12289,7 +12388,7 @@ msgid "No category" msgstr "Нет категории" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 -#: templates/js/translated/stock.js:2633 +#: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "Отобразить списком" @@ -12301,7 +12400,7 @@ msgstr "Отобразить сеткой" msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "Отобразить древом" @@ -12313,64 +12412,64 @@ msgstr "" msgid "Subscribed category" msgstr "Категория с подпиской" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "результаты" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 msgid "Edit test result" msgstr "Редактировать результаты тестирования" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "Приблизительный" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "Максимальное количество" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" @@ -12907,7 +13006,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1737 +#: templates/js/translated/stock.js:1773 msgid "Shipped to customer" msgstr "" @@ -13165,7 +13264,7 @@ msgstr "" msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "Выбрать складские позиции" @@ -13189,248 +13288,256 @@ msgstr "ПРОВАЛЕН" msgid "NO RESULT" msgstr "НЕТ РЕЗУЛЬТАТА" -#: templates/js/translated/stock.js:1440 +#: templates/js/translated/stock.js:1447 msgid "Pass test" msgstr "Тест пройден" -#: templates/js/translated/stock.js:1443 +#: templates/js/translated/stock.js:1450 msgid "Add test result" msgstr "Добавить Результат Тестирования" -#: templates/js/translated/stock.js:1466 +#: templates/js/translated/stock.js:1473 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1530 +#: templates/js/translated/stock.js:1537 msgid "Test Date" msgstr "Данные Тестирования" -#: templates/js/translated/stock.js:1677 +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1733 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1729 +#: templates/js/translated/stock.js:1765 msgid "In production" msgstr "В производстве" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1769 msgid "Installed in Stock Item" msgstr "Установленные складские позиции" -#: templates/js/translated/stock.js:1741 +#: templates/js/translated/stock.js:1777 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1747 +#: templates/js/translated/stock.js:1783 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1839 msgid "Change stock status" msgstr "Изменить статус запасов" -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1848 msgid "Merge stock" msgstr "Объединить Запасы" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:1897 msgid "Delete stock" msgstr "Удалить запасы" -#: templates/js/translated/stock.js:1916 +#: templates/js/translated/stock.js:1952 msgid "stock items" msgstr "складские позиции" -#: templates/js/translated/stock.js:1921 +#: templates/js/translated/stock.js:1957 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1932 +#: templates/js/translated/stock.js:1968 msgid "Stock Actions" msgstr "Действия с Запасами" -#: templates/js/translated/stock.js:1976 +#: templates/js/translated/stock.js:2012 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2054 +#: templates/js/translated/stock.js:2090 msgid "Stock item is in production" msgstr "Складская позиция в производстве" -#: templates/js/translated/stock.js:2059 +#: templates/js/translated/stock.js:2095 msgid "Stock item assigned to sales order" msgstr "Складская позиция зарезервирована заказом на продажу" -#: templates/js/translated/stock.js:2062 +#: templates/js/translated/stock.js:2098 msgid "Stock item assigned to customer" msgstr "Складская позиция была назначена покупателю" -#: templates/js/translated/stock.js:2065 +#: templates/js/translated/stock.js:2101 msgid "Serialized stock item has been allocated" msgstr "Сериализированная складская позиция была зарезервирована " -#: templates/js/translated/stock.js:2067 +#: templates/js/translated/stock.js:2103 msgid "Stock item has been fully allocated" msgstr "Складские позиции были полностью зарезервированы" -#: templates/js/translated/stock.js:2069 +#: templates/js/translated/stock.js:2105 msgid "Stock item has been partially allocated" msgstr "Складские позиции были частично зарезервированы" -#: templates/js/translated/stock.js:2072 +#: templates/js/translated/stock.js:2108 msgid "Stock item has been installed in another item" msgstr "Складская позиция была установлена в другую деталь" -#: templates/js/translated/stock.js:2074 +#: templates/js/translated/stock.js:2110 msgid "Stock item has been consumed by a build order" msgstr "Складская позиция была поглощена заказом на продажу" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2114 msgid "Stock item has expired" msgstr "Складская позиция была просрочена" -#: templates/js/translated/stock.js:2080 +#: templates/js/translated/stock.js:2116 msgid "Stock item will expire soon" msgstr "Складская позиция будет просрочена в скором времени" -#: templates/js/translated/stock.js:2085 +#: templates/js/translated/stock.js:2121 msgid "Stock item has been rejected" msgstr "Складская позиция была отклонена" -#: templates/js/translated/stock.js:2087 +#: templates/js/translated/stock.js:2123 msgid "Stock item is lost" msgstr "Складская позиция была утеряна" -#: templates/js/translated/stock.js:2089 +#: templates/js/translated/stock.js:2125 msgid "Stock item is destroyed" msgstr "Складская позиция была уничтожена" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2129 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "Истощен" -#: templates/js/translated/stock.js:2258 +#: templates/js/translated/stock.js:2294 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2305 +#: templates/js/translated/stock.js:2341 msgid "Stock Value" msgstr "Кол-во Запаса" -#: templates/js/translated/stock.js:2433 +#: templates/js/translated/stock.js:2469 msgid "No stock items matching query" msgstr "Нет складских позиций соответствующих запросу" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2573 msgid "stock locations" msgstr "места хранения" -#: templates/js/translated/stock.js:2692 +#: templates/js/translated/stock.js:2728 msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2810 +#: templates/js/translated/stock.js:2846 msgid "Details" msgstr "Подробности" -#: templates/js/translated/stock.js:2814 +#: templates/js/translated/stock.js:2850 msgid "No changes" msgstr "Нет изменений" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:2862 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2848 +#: templates/js/translated/stock.js:2884 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2865 +#: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2880 +#: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2897 +#: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2914 +#: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" msgstr "Складская позиция не существует" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3005 msgid "Added" msgstr "Добавлено" -#: templates/js/translated/stock.js:2977 +#: templates/js/translated/stock.js:3013 msgid "Removed" msgstr "Удалено" -#: templates/js/translated/stock.js:3049 +#: templates/js/translated/stock.js:3085 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139 +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" msgstr "Снять складскую позицию" -#: templates/js/translated/stock.js:3161 +#: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" msgstr "Выберите складскую позицию для съема" -#: templates/js/translated/stock.js:3182 +#: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" msgstr "Установить другую складскую позицию в эту деталь" -#: templates/js/translated/stock.js:3183 +#: 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:3185 +#: 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:3186 +#: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" msgstr "Складская позиция сейчас доступна на складе" -#: templates/js/translated/stock.js:3187 +#: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" msgstr "Складская позиция не установлена в другую деталь" -#: templates/js/translated/stock.js:3188 +#: 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:3201 +#: templates/js/translated/stock.js:3237 msgid "Select part to install" msgstr "" -#: templates/js/translated/stock.js:3264 +#: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" msgstr "Выберите одну или более складских позиций" -#: templates/js/translated/stock.js:3277 +#: templates/js/translated/stock.js:3313 msgid "Selected stock items" msgstr "Выбранные складские позиции" -#: templates/js/translated/stock.js:3281 +#: templates/js/translated/stock.js:3317 msgid "Change Stock Status" msgstr "Изменить статус запасов" diff --git a/InvenTree/locale/sk/LC_MESSAGES/django.po b/InvenTree/locale/sk/LC_MESSAGES/django.po index 8a47436eff..2e23f792ad 100644 --- a/InvenTree/locale/sk/LC_MESSAGES/django.po +++ b/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-02-28 04:05+0000\n" -"PO-Revision-Date: 2024-02-28 07:23\n" +"POT-Creation-Date: 2024-03-19 01:26+0000\n" +"PO-Revision-Date: 2024-03-19 11:52\n" "Last-Translator: \n" "Language-Team: Slovak\n" "Language: sk_SK\n" @@ -30,20 +30,20 @@ msgstr "" msgid "Invalid unit provided ({unit})" msgstr "" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" msgstr "" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" msgstr "" @@ -64,18 +64,18 @@ msgstr "" #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 #: templates/js/translated/return_order.js:776 #: templates/js/translated/sales_order.js:1067 #: templates/js/translated/sales_order.js:1982 -#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 msgid "Notes" msgstr "" @@ -132,42 +132,42 @@ msgstr "" msgid "Registration is disabled." msgstr "" -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "" @@ -203,131 +203,135 @@ msgstr "" msgid "Supplied URL is not a valid image file" msgstr "" -#: InvenTree/locales.py:16 +#: InvenTree/locales.py:18 msgid "Bulgarian" msgstr "" -#: InvenTree/locales.py:17 +#: InvenTree/locales.py:19 msgid "Czech" msgstr "" -#: InvenTree/locales.py:18 +#: InvenTree/locales.py:20 msgid "Danish" msgstr "" -#: InvenTree/locales.py:19 +#: InvenTree/locales.py:21 msgid "German" msgstr "" -#: InvenTree/locales.py:20 +#: InvenTree/locales.py:22 msgid "Greek" msgstr "" -#: InvenTree/locales.py:21 +#: InvenTree/locales.py:23 msgid "English" msgstr "" -#: InvenTree/locales.py:22 +#: InvenTree/locales.py:24 msgid "Spanish" msgstr "" -#: InvenTree/locales.py:23 +#: InvenTree/locales.py:25 msgid "Spanish (Mexican)" msgstr "" -#: InvenTree/locales.py:24 +#: InvenTree/locales.py:26 msgid "Farsi / Persian" msgstr "" -#: InvenTree/locales.py:25 +#: InvenTree/locales.py:27 msgid "Finnish" msgstr "" -#: InvenTree/locales.py:26 +#: InvenTree/locales.py:28 msgid "French" msgstr "" -#: InvenTree/locales.py:27 +#: InvenTree/locales.py:29 msgid "Hebrew" msgstr "" -#: InvenTree/locales.py:28 +#: InvenTree/locales.py:30 msgid "Hindi" msgstr "" -#: InvenTree/locales.py:29 +#: InvenTree/locales.py:31 msgid "Hungarian" msgstr "" -#: InvenTree/locales.py:30 +#: InvenTree/locales.py:32 msgid "Italian" msgstr "" -#: InvenTree/locales.py:31 +#: InvenTree/locales.py:33 msgid "Japanese" msgstr "" -#: InvenTree/locales.py:32 +#: InvenTree/locales.py:34 msgid "Korean" msgstr "" -#: InvenTree/locales.py:33 -msgid "Dutch" -msgstr "" - -#: InvenTree/locales.py:34 -msgid "Norwegian" -msgstr "" - #: InvenTree/locales.py:35 -msgid "Polish" +msgid "Latvian" msgstr "" #: InvenTree/locales.py:36 -msgid "Portuguese" +msgid "Dutch" msgstr "" #: InvenTree/locales.py:37 -msgid "Portuguese (Brazilian)" +msgid "Norwegian" msgstr "" #: InvenTree/locales.py:38 -msgid "Russian" +msgid "Polish" msgstr "" #: InvenTree/locales.py:39 -msgid "Slovak" +msgid "Portuguese" msgstr "" #: InvenTree/locales.py:40 -msgid "Slovenian" +msgid "Portuguese (Brazilian)" msgstr "" #: InvenTree/locales.py:41 -msgid "Serbian" +msgid "Russian" msgstr "" #: InvenTree/locales.py:42 -msgid "Swedish" +msgid "Slovak" msgstr "" #: InvenTree/locales.py:43 -msgid "Thai" +msgid "Slovenian" msgstr "" #: InvenTree/locales.py:44 -msgid "Turkish" +msgid "Serbian" msgstr "" #: InvenTree/locales.py:45 -msgid "Vietnamese" +msgid "Swedish" msgstr "" #: InvenTree/locales.py:46 -msgid "Chinese (Simplified)" +msgid "Thai" msgstr "" #: InvenTree/locales.py:47 +msgid "Turkish" +msgstr "" + +#: InvenTree/locales.py:48 +msgid "Vietnamese" +msgstr "" + +#: InvenTree/locales.py:49 +msgid "Chinese (Simplified)" +msgstr "" + +#: InvenTree/locales.py:50 msgid "Chinese (Traditional)" msgstr "" @@ -391,7 +395,7 @@ msgstr "" msgid "Missing external link" msgstr "" -#: InvenTree/models.py:559 stock/models.py:2446 +#: InvenTree/models.py:559 stock/models.py:2449 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -401,7 +405,7 @@ msgstr "" msgid "Select file to attach" msgstr "" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -432,13 +436,13 @@ msgstr "" msgid "File comment" msgstr "" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:3000 users/models.py:100 +#: templates/js/translated/stock.js:3036 users/models.py:100 msgid "User" msgstr "" @@ -479,10 +483,10 @@ msgstr "" msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -495,7 +499,7 @@ msgstr "" #: templates/js/translated/company.js:1155 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "" @@ -506,10 +510,10 @@ msgstr "" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -523,7 +527,7 @@ msgstr "" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -531,8 +535,8 @@ msgstr "" #: templates/js/translated/return_order.js:314 #: templates/js/translated/sales_order.js:802 #: templates/js/translated/sales_order.js:1812 -#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021 -#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "" @@ -545,7 +549,7 @@ msgid "parent" msgstr "" #: InvenTree/models.py:916 templates/js/translated/part.js:2794 -#: templates/js/translated/stock.js:2721 +#: templates/js/translated/stock.js:2757 msgid "Path" msgstr "" @@ -581,7 +585,7 @@ msgstr "" msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:62 part/models.py:4134 +#: InvenTree/serializers.py:62 part/models.py:4143 msgid "Must be a valid number" msgstr "" @@ -596,89 +600,89 @@ msgstr "" msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:436 +#: InvenTree/serializers.py:441 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:448 +#: InvenTree/serializers.py:453 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:467 +#: InvenTree/serializers.py:472 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:469 +#: InvenTree/serializers.py:474 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:476 +#: InvenTree/serializers.py:481 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:537 +#: InvenTree/serializers.py:542 msgid "Filename" msgstr "" -#: InvenTree/serializers.py:571 +#: InvenTree/serializers.py:576 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:591 +#: InvenTree/serializers.py:596 msgid "Data File" msgstr "" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:597 msgid "Select data file for upload" msgstr "" -#: InvenTree/serializers.py:609 +#: InvenTree/serializers.py:614 msgid "Unsupported file type" msgstr "" -#: InvenTree/serializers.py:615 +#: InvenTree/serializers.py:620 msgid "File is too large" msgstr "" -#: InvenTree/serializers.py:636 +#: InvenTree/serializers.py:641 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:639 +#: InvenTree/serializers.py:644 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:752 +#: InvenTree/serializers.py:757 msgid "No data rows provided" msgstr "" -#: InvenTree/serializers.py:755 +#: InvenTree/serializers.py:760 msgid "No data columns supplied" msgstr "" -#: InvenTree/serializers.py:822 +#: InvenTree/serializers.py:827 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "" -#: InvenTree/serializers.py:831 +#: InvenTree/serializers.py:836 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:859 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:855 +#: InvenTree/serializers.py:860 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:873 +#: InvenTree/serializers.py:878 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/status.py:66 part/serializers.py:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "" @@ -818,7 +822,7 @@ msgstr "" msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 msgid "Merged stock items" msgstr "" @@ -838,7 +842,7 @@ msgstr "" msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 msgid "Consumed by build order" msgstr "" @@ -938,14 +942,14 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -960,7 +964,7 @@ msgid "Tracked" msgstr "" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -985,7 +989,7 @@ msgstr "" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "" @@ -1014,7 +1018,7 @@ msgstr "" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1044,11 +1048,11 @@ msgstr "" #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1059,7 +1063,7 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:267 stock/serializers.py:689 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1086,9 +1090,9 @@ msgstr "" #: templates/js/translated/sales_order.js:1598 #: templates/js/translated/sales_order.js:1796 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960 -#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054 -#: templates/js/translated/stock.js:3200 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 msgid "Part" msgstr "" @@ -1146,8 +1150,8 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" @@ -1242,53 +1246,53 @@ msgstr "" msgid "Project code for this build order" msgstr "" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "" -#: build/models.py:789 +#: build/models.py:805 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" msgstr "" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1298,7 +1302,7 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:463 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1310,7 +1314,7 @@ msgstr "" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1325,43 +1329,43 @@ msgstr "" #: templates/js/translated/sales_order.js:1698 #: templates/js/translated/sales_order.js:1824 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 -#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985 -#: templates/js/translated/stock.js:3068 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1381 +#: build/models.py:1397 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1390 +#: build/models.py:1406 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1473 +#: build/models.py:1489 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 @@ -1372,23 +1376,23 @@ msgstr "" #: templates/js/translated/sales_order.js:1605 #: templates/js/translated/sales_order.js:1692 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 -#: templates/js/translated/stock.js:2941 +#: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "" @@ -1425,8 +1429,8 @@ msgstr "" msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" @@ -1451,10 +1455,10 @@ msgstr "" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1466,8 +1470,8 @@ msgstr "" #: templates/js/translated/sales_order.js:1627 #: templates/js/translated/sales_order.js:1706 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164 -#: templates/js/translated/stock.js:2835 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 msgid "Location" msgstr "" @@ -1493,16 +1497,16 @@ msgstr "" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 #: templates/js/translated/purchase_order.js:1723 #: templates/js/translated/return_order.js:331 #: templates/js/translated/sales_order.js:819 -#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959 -#: templates/js/translated/stock.js:3084 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 msgid "Status" msgstr "" @@ -1566,7 +1570,7 @@ msgstr "" msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "" @@ -1602,11 +1606,11 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1065 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" @@ -1619,7 +1623,7 @@ msgstr "" msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "" @@ -1659,44 +1663,45 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 #: stock/api.py:745 msgid "BOM Item" msgstr "" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1862,7 +1867,7 @@ msgstr "" #: templates/js/translated/pricing.js:929 #: templates/js/translated/sales_order.js:769 #: templates/js/translated/sales_order.js:992 -#: templates/js/translated/stock.js:2888 +#: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "" @@ -1920,8 +1925,8 @@ msgstr "" #: templates/js/translated/build.js:1377 #: templates/js/translated/model_renderers.js:235 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153 -#: templates/js/translated/stock.js:3091 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" @@ -1990,27 +1995,31 @@ msgstr "" msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:210 -msgid "Incomplete Build Outputs" -msgstr "" - -#: build/templates/build/detail.html:214 -msgid "Create new build output" +#: 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:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2026,15 +2035,15 @@ msgstr "" msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" msgstr "" @@ -2112,1390 +2121,1414 @@ msgstr "" msgid "User or group responsible for this project" msgstr "" -#: common/models.py:737 +#: common/models.py:744 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:741 +#: common/models.py:748 msgid "Settings value" msgstr "" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "" -#: common/models.py:1231 +#: common/models.py:1238 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1283 +#: common/models.py:1290 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "" -#: common/models.py:1298 +#: common/models.py:1305 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "" -#: common/models.py:1305 +#: common/models.py:1312 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "" -#: common/models.py:1332 +#: common/models.py:1339 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "" -#: common/models.py:1339 +#: common/models.py:1346 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "" -#: common/models.py:1346 +#: common/models.py:1353 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1352 +#: common/models.py:1359 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1360 +#: common/models.py:1367 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1369 +#: common/models.py:1376 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1378 +#: common/models.py:1385 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1386 +#: common/models.py:1393 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1399 +#: common/models.py:1406 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "" -#: common/models.py:1411 +#: common/models.py:1418 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1415 +#: common/models.py:1422 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1421 +#: common/models.py:1428 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1427 +#: common/models.py:1434 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1433 +#: common/models.py:1440 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1439 +#: common/models.py:1446 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1505 +#: common/models.py:1512 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1512 +#: common/models.py:1519 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "" -#: common/models.py:1525 +#: common/models.py:1532 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1526 +#: common/models.py:1533 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1530 +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1532 +#: common/models.py:1539 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1540 +#: common/models.py:1547 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1548 +#: common/models.py:1555 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1564 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1580 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1588 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1595 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1603 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1611 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1618 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1632 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1645 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: 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:202 msgid "Page Size" msgstr "" -#: common/models.py:1651 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1657 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1664 +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1671 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1677 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1692 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1704 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1711 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1719 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1725 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1731 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1736 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1741 +#: 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 "Build Order Reference Pattern" msgstr "" -#: common/models.py:1743 +#: common/models.py:1764 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1757 +#: common/models.py:1778 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1765 +#: common/models.py:1786 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1773 +#: common/models.py:1794 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1780 +#: common/models.py:1801 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1787 +#: common/models.py:1808 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1795 +#: common/models.py:1816 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1803 +#: common/models.py:1824 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1811 +#: common/models.py:1832 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "" -#: common/models.py:1825 +#: common/models.py:1846 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1838 +#: common/models.py:1859 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1844 +#: common/models.py:1865 msgid "Email required" msgstr "" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1852 +#: common/models.py:1873 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "" -#: common/models.py:1859 +#: common/models.py:1880 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "" -#: common/models.py:1865 +#: common/models.py:1886 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "" -#: common/models.py:1879 +#: common/models.py:1900 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1892 +#: common/models.py:1913 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1929 +#: common/models.py:1950 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "" -#: common/models.py:1936 +#: common/models.py:1957 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1950 +#: common/models.py:1971 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1958 +#: common/models.py:1979 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1966 +#: common/models.py:1987 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1974 +#: common/models.py:1995 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2029 common/models.py:2429 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2043 +#: common/models.py:2070 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2045 +#: common/models.py:2072 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2051 +#: common/models.py:2078 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2052 +#: common/models.py:2079 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2057 +#: common/models.py:2084 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2058 +#: common/models.py:2085 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2063 +#: common/models.py:2090 msgid "Show latest parts" msgstr "" -#: common/models.py:2064 +#: common/models.py:2091 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2069 +#: common/models.py:2096 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2070 +#: common/models.py:2097 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2075 +#: common/models.py:2102 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2076 +#: common/models.py:2103 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2081 +#: common/models.py:2108 msgid "Show low stock" msgstr "" -#: common/models.py:2082 +#: common/models.py:2109 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2087 +#: common/models.py:2114 msgid "Show depleted stock" msgstr "" -#: common/models.py:2088 +#: common/models.py:2115 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2093 +#: common/models.py:2120 msgid "Show needed stock" msgstr "" -#: common/models.py:2094 +#: common/models.py:2121 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2099 +#: common/models.py:2126 msgid "Show expired stock" msgstr "" -#: common/models.py:2100 +#: common/models.py:2127 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2105 +#: common/models.py:2132 msgid "Show stale stock" msgstr "" -#: common/models.py:2106 +#: common/models.py:2133 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2111 +#: common/models.py:2138 msgid "Show pending builds" msgstr "" -#: common/models.py:2112 +#: common/models.py:2139 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2117 +#: common/models.py:2144 msgid "Show overdue builds" msgstr "" -#: common/models.py:2118 +#: common/models.py:2145 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2123 +#: common/models.py:2150 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2124 +#: common/models.py:2151 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2129 +#: common/models.py:2156 msgid "Show overdue POs" msgstr "" -#: common/models.py:2130 +#: common/models.py:2157 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2135 +#: common/models.py:2162 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2136 +#: common/models.py:2163 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2141 +#: common/models.py:2168 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2142 +#: common/models.py:2169 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2147 +#: common/models.py:2174 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2148 +#: common/models.py:2175 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2153 +#: common/models.py:2180 msgid "Show News" msgstr "" -#: common/models.py:2154 +#: common/models.py:2181 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2159 +#: common/models.py:2186 msgid "Inline label display" msgstr "" -#: common/models.py:2161 +#: common/models.py:2188 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2167 +#: common/models.py:2194 msgid "Default label printer" msgstr "" -#: common/models.py:2169 +#: common/models.py:2196 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2175 +#: common/models.py:2202 msgid "Inline report display" msgstr "" -#: common/models.py:2177 +#: common/models.py:2204 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2183 +#: common/models.py:2210 msgid "Search Parts" msgstr "" -#: common/models.py:2184 +#: common/models.py:2211 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2189 +#: common/models.py:2216 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2190 +#: common/models.py:2217 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2195 +#: common/models.py:2222 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2196 +#: common/models.py:2223 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2201 +#: common/models.py:2228 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2202 +#: common/models.py:2229 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2207 +#: common/models.py:2234 msgid "Search Categories" msgstr "" -#: common/models.py:2208 +#: common/models.py:2235 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2213 +#: common/models.py:2240 msgid "Search Stock" msgstr "" -#: common/models.py:2214 +#: common/models.py:2241 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2219 +#: common/models.py:2246 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2221 +#: common/models.py:2248 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2227 +#: common/models.py:2254 msgid "Search Locations" msgstr "" -#: common/models.py:2228 +#: common/models.py:2255 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2233 +#: common/models.py:2260 msgid "Search Companies" msgstr "" -#: common/models.py:2234 +#: common/models.py:2261 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2239 +#: common/models.py:2266 msgid "Search Build Orders" msgstr "" -#: common/models.py:2240 +#: common/models.py:2267 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2245 +#: common/models.py:2272 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2246 +#: common/models.py:2273 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2251 +#: common/models.py:2278 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2253 +#: common/models.py:2280 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2259 +#: common/models.py:2286 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2260 +#: common/models.py:2287 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2265 +#: common/models.py:2292 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2267 +#: common/models.py:2294 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2273 +#: common/models.py:2300 msgid "Search Return Orders" msgstr "" -#: common/models.py:2274 +#: common/models.py:2301 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2279 +#: common/models.py:2306 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2281 +#: common/models.py:2308 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2287 +#: common/models.py:2314 msgid "Search Preview Results" msgstr "" -#: common/models.py:2289 +#: common/models.py:2316 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2295 +#: common/models.py:2322 msgid "Regex Search" msgstr "" -#: common/models.py:2296 +#: common/models.py:2323 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2301 +#: common/models.py:2328 msgid "Whole Word Search" msgstr "" -#: common/models.py:2302 +#: common/models.py:2329 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2307 +#: common/models.py:2334 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2308 +#: common/models.py:2335 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2313 +#: common/models.py:2340 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2314 +#: common/models.py:2341 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2319 +#: common/models.py:2346 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2320 +#: common/models.py:2347 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2325 +#: common/models.py:2352 msgid "Date Format" msgstr "" -#: common/models.py:2326 +#: common/models.py:2353 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2366 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2340 +#: common/models.py:2367 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2372 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2347 +#: common/models.py:2374 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2353 +#: common/models.py:2380 msgid "Table String Length" msgstr "" -#: common/models.py:2355 +#: common/models.py:2382 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2361 +#: common/models.py:2388 msgid "Default part label template" msgstr "" -#: common/models.py:2362 +#: common/models.py:2389 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2367 +#: common/models.py:2394 msgid "Default stock item template" msgstr "" -#: common/models.py:2369 +#: common/models.py:2396 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2375 +#: common/models.py:2402 msgid "Default stock location label template" msgstr "" -#: common/models.py:2377 +#: common/models.py:2404 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2383 +#: common/models.py:2410 msgid "Receive error reports" msgstr "" -#: common/models.py:2384 +#: common/models.py:2411 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2389 +#: common/models.py:2416 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2417 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2460 msgid "Price break quantity" msgstr "" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3503,23 +3536,23 @@ msgstr "" msgid "Price" msgstr "" -#: common/models.py:2441 +#: common/models.py:2468 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2639 common/models.py:2824 msgid "Endpoint" msgstr "" -#: common/models.py:2613 +#: common/models.py:2640 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2623 +#: common/models.py:2650 msgid "Name for this webhook" msgstr "" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3529,101 +3562,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2627 +#: common/models.py:2654 msgid "Is this webhook active" msgstr "" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2670 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2644 +#: common/models.py:2671 msgid "Token for access" msgstr "" -#: common/models.py:2652 +#: common/models.py:2679 msgid "Secret" msgstr "" -#: common/models.py:2653 +#: common/models.py:2680 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2761 +#: common/models.py:2788 msgid "Message ID" msgstr "" -#: common/models.py:2762 +#: common/models.py:2789 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2770 +#: common/models.py:2797 msgid "Host" msgstr "" -#: common/models.py:2771 +#: common/models.py:2798 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2779 +#: common/models.py:2806 msgid "Header" msgstr "" -#: common/models.py:2780 +#: common/models.py:2807 msgid "Header of this message" msgstr "" -#: common/models.py:2787 +#: common/models.py:2814 msgid "Body" msgstr "" -#: common/models.py:2788 +#: common/models.py:2815 msgid "Body of this message" msgstr "" -#: common/models.py:2798 +#: common/models.py:2825 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2803 +#: common/models.py:2830 msgid "Worked on" msgstr "" -#: common/models.py:2804 +#: common/models.py:2831 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2930 +#: common/models.py:2957 msgid "Id" msgstr "" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2959 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2963 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2965 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2967 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Read" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Was this news item read?" msgstr "" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2987 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3633,31 +3666,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2960 +#: common/models.py:2987 msgid "Image file" msgstr "" -#: common/models.py:3002 +#: common/models.py:3029 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3021 +#: common/models.py:3048 msgid "Unit name" msgstr "" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3029 +#: common/models.py:3056 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3037 +#: common/models.py:3064 msgid "Unit definition" msgstr "" @@ -3961,7 +3994,7 @@ msgid "Link to address information (external)" msgstr "" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" @@ -3972,7 +4005,7 @@ msgstr "" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3987,7 +4020,7 @@ msgid "Select manufacturer" msgstr "" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4022,9 +4055,9 @@ msgstr "" #: company/models.py:615 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2438 templates/js/translated/company.js:1156 +#: stock/models.py:2441 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1519 msgid "Value" msgstr "" @@ -4033,7 +4066,7 @@ msgid "Parameter value" msgstr "" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4059,7 +4092,7 @@ msgstr "" #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4076,7 +4109,7 @@ msgstr "" msgid "Select supplier" msgstr "" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "" @@ -4093,13 +4126,13 @@ msgid "Supplier part description" msgstr "" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:579 msgid "Note" msgstr "" @@ -4112,10 +4145,10 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 -#: templates/js/translated/stock.js:2387 +#: templates/js/translated/stock.js:2423 msgid "Packaging" msgstr "" @@ -4157,7 +4190,7 @@ msgstr "" msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "" @@ -4218,13 +4251,13 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1100 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 #: templates/js/translated/return_order.js:296 #: templates/js/translated/sales_order.js:784 -#: templates/js/translated/stock.js:2923 +#: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:804 msgid "Customer" msgstr "" @@ -4429,8 +4462,9 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "" @@ -4482,7 +4516,7 @@ msgstr "" #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2243 +#: templates/js/translated/stock.js:2279 msgid "Supplier Part" msgstr "" @@ -4528,7 +4562,7 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4577,15 +4611,17 @@ msgstr "" msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 -#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:193 msgid "Stock Items" msgstr "" @@ -4639,8 +4675,8 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" @@ -4665,7 +4701,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "" @@ -4679,8 +4715,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "" @@ -4821,7 +4857,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1674 -#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "" @@ -4830,7 +4866,7 @@ msgstr "" #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 -#: templates/js/translated/stock.js:2905 +#: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "" @@ -4838,11 +4874,11 @@ msgstr "" msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -5029,9 +5065,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2274 +#: templates/js/translated/stock.js:2310 msgid "Purchase Price" msgstr "" @@ -5084,8 +5120,8 @@ msgstr "" msgid "User who checked this shipment" msgstr "" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "" @@ -5133,7 +5169,7 @@ msgstr "" msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "" @@ -5207,159 +5243,159 @@ msgstr "" msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:610 +#: order/serializers.py:632 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1677 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "" @@ -5733,7 +5769,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" @@ -5763,12 +5799,12 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5780,12 +5816,12 @@ msgstr "" #: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 -#: templates/js/translated/stock.js:1999 +#: templates/js/translated/stock.js:2035 msgid "IPN" msgstr "" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" @@ -5861,10 +5897,10 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -5885,17 +5921,17 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3897 msgid "Part IPN" msgstr "" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5973,8 +6009,8 @@ msgstr "" msgid "This option must be selected" msgstr "" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5982,12 +6018,17 @@ msgstr "" msgid "Category" msgstr "" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5995,7 +6036,7 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -6010,7 +6051,8 @@ msgstr "" msgid "Default location for parts in this category" msgstr "" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 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" @@ -6076,7 +6118,7 @@ msgstr "" msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3896 msgid "Part name" msgstr "" @@ -6358,7 +6400,7 @@ msgstr "" #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1732 -#: templates/js/translated/stock.js:2785 +#: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" @@ -6410,586 +6452,602 @@ msgstr "" msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3448 -msgid "Test with this name already exists for this part" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "" -#: part/models.py:3496 +#: part/models.py:3505 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "" -#: part/models.py:3503 +#: part/models.py:3512 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3847 +#: part/models.py:3856 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3885 +#: part/models.py:3894 msgid "Part ID or part name" msgstr "" -#: part/models.py:3886 +#: part/models.py:3895 msgid "Unique part ID value" msgstr "" -#: part/models.py:3888 +#: part/models.py:3897 msgid "Part IPN value" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "Level" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "BOM level" msgstr "" -#: part/models.py:3979 +#: part/models.py:3988 msgid "Select parent part" msgstr "" -#: part/models.py:3989 +#: part/models.py:3998 msgid "Sub part" msgstr "" -#: part/models.py:3990 +#: part/models.py:3999 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4001 +#: part/models.py:4010 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4007 +#: part/models.py:4016 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4013 +#: part/models.py:4022 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4029 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4021 +#: part/models.py:4030 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4028 +#: part/models.py:4037 msgid "BOM item reference" msgstr "" -#: part/models.py:4036 +#: part/models.py:4045 msgid "BOM item notes" msgstr "" -#: part/models.py:4042 +#: part/models.py:4051 msgid "Checksum" msgstr "" -#: part/models.py:4043 +#: part/models.py:4052 msgid "BOM line checksum" msgstr "" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4057 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4049 +#: part/models.py:4058 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4063 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:4055 +#: part/models.py:4064 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4069 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4061 +#: part/models.py:4070 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4146 stock/models.py:649 +#: part/models.py:4155 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4165 part/models.py:4167 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4298 +#: part/models.py:4307 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4319 +#: part/models.py:4328 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4332 +#: part/models.py:4341 msgid "Parent BOM item" msgstr "" -#: part/models.py:4340 +#: part/models.py:4349 msgid "Substitute part" msgstr "" -#: part/models.py:4356 +#: part/models.py:4365 msgid "Part 1" msgstr "" -#: part/models.py:4364 +#: part/models.py:4373 msgid "Part 2" msgstr "" -#: part/models.py:4365 +#: part/models.py:4374 msgid "Select Related Part" msgstr "" -#: part/models.py:4384 +#: part/models.py:4393 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4389 +#: part/models.py:4398 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:432 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:480 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1104 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1078 +#: part/serializers.py:1114 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1088 +#: part/serializers.py:1124 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1647 +#: part/serializers.py:1693 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1659 +#: part/serializers.py:1705 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1694 +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "" @@ -7147,7 +7205,7 @@ msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/stock.js:2179 users/models.py:191 +#: templates/js/translated/stock.js:2215 users/models.py:191 msgid "Stocktake" msgstr "" @@ -7221,7 +7279,7 @@ msgid "Validate BOM" msgstr "" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "" @@ -7405,7 +7463,7 @@ msgstr "" msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "" @@ -7509,7 +7567,7 @@ msgstr "" #: templates/InvenTree/settings/sidebar.html:51 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 -#: templates/js/translated/stock.js:2033 templates/navbar.html:31 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7555,7 +7613,7 @@ msgstr "" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 -#: templates/js/translated/stock.js:2209 +#: templates/js/translated/stock.js:2245 msgid "Last Updated" msgstr "" @@ -7999,7 +8057,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "" @@ -8307,16 +8365,16 @@ msgstr "" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "" @@ -8336,103 +8394,111 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" msgstr "" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" msgstr "" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8499,12 +8565,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1492 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Result" msgstr "" @@ -8531,7 +8597,7 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:168 #: stock/admin.py:162 templates/js/translated/stock.js:700 -#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110 msgid "Serial" msgstr "" @@ -8615,7 +8681,7 @@ msgstr "" #: stock/admin.py:256 stock/models.py:886 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2193 users/models.py:113 +#: templates/js/translated/stock.js:2229 users/models.py:113 msgid "Expiry Date" msgstr "" @@ -8713,7 +8779,7 @@ msgstr "" msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:174 templates/js/translated/stock.js:2745 +#: stock/models.py:174 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" @@ -8722,7 +8788,7 @@ msgstr "" msgid "This is an external stock location" msgstr "" -#: stock/models.py:181 templates/js/translated/stock.js:2754 +#: stock/models.py:181 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" @@ -8739,7 +8805,7 @@ msgstr "" msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:290 msgid "Stock item cannot be created for virtual parts" msgstr "" @@ -8784,7 +8850,7 @@ msgstr "" msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1351 msgid "Packaging this stock item is stored in" msgstr "" @@ -8796,7 +8862,7 @@ msgstr "" msgid "Serial number for this item" msgstr "" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1334 msgid "Batch code for this stock item" msgstr "" @@ -8873,7 +8939,7 @@ msgstr "" msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:529 msgid "Serial numbers already exist" msgstr "" @@ -8905,7 +8971,7 @@ msgstr "" msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1240 msgid "Duplicate stock items" msgstr "" @@ -8929,207 +8995,236 @@ msgstr "" msgid "Entry notes" msgstr "" -#: stock/models.py:2399 +#: stock/models.py:2402 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2405 +#: stock/models.py:2408 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Test result" msgstr "" -#: stock/models.py:2439 +#: stock/models.py:2442 msgid "Test output value" msgstr "" -#: stock/models.py:2447 +#: stock/models.py:2450 msgid "Test result attachment" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2454 msgid "Test notes" msgstr "" -#: stock/serializers.py:96 +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "" + +#: stock/models.py:2463 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2469 +msgid "Started" +msgstr "" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:100 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:119 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 +#: stock/serializers.py:151 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:184 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:267 +#: stock/serializers.py:282 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:380 +#: stock/serializers.py:402 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:442 +#: stock/serializers.py:464 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:455 +#: stock/serializers.py:477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:462 +#: stock/serializers.py:484 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:480 +#: stock/serializers.py:502 msgid "Optional note field" msgstr "" -#: stock/serializers.py:490 +#: stock/serializers.py:512 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:545 +#: stock/serializers.py:567 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:574 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:553 +#: stock/serializers.py:575 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:566 +#: stock/serializers.py:588 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:596 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:581 +#: stock/serializers.py:607 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:620 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:628 +#: stock/serializers.py:655 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:663 +#: stock/serializers.py:690 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:676 +#: stock/serializers.py:703 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:693 +#: stock/serializers.py:720 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:724 +#: stock/serializers.py:751 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:761 +#: stock/serializers.py:788 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:767 +#: stock/serializers.py:794 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1036 +#: stock/serializers.py:1069 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1040 +#: stock/serializers.py:1073 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1044 +#: stock/serializers.py:1077 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1068 +#: stock/serializers.py:1101 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1074 +#: stock/serializers.py:1107 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1082 +#: stock/serializers.py:1115 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1125 stock/serializers.py:1379 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1171 +#: stock/serializers.py:1204 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1176 +#: stock/serializers.py:1209 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1177 +#: stock/serializers.py:1210 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1182 +#: stock/serializers.py:1215 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1183 +#: stock/serializers.py:1216 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1193 +#: stock/serializers.py:1226 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1260 +#: stock/serializers.py:1293 msgid "No Change" msgstr "" -#: stock/serializers.py:1289 +#: stock/serializers.py:1322 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1308 +#: stock/serializers.py:1341 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1336 +#: stock/serializers.py:1369 msgid "Stock transaction notes" msgstr "" @@ -9154,7 +9249,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 msgid "Delete Test Data" msgstr "" @@ -9170,15 +9265,15 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:274 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 msgid "Add Test Result" msgstr "" @@ -9201,17 +9296,17 @@ msgid "Stock adjustment actions" msgstr "" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 msgid "Count stock" msgstr "" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:1803 msgid "Add stock" msgstr "" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1776 +#: templates/js/translated/stock.js:1812 msgid "Remove stock" msgstr "" @@ -9220,12 +9315,12 @@ msgid "Serialize stock" msgstr "" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 msgid "Transfer stock" msgstr "" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1884 msgid "Assign to customer" msgstr "" @@ -9364,7 +9459,7 @@ msgid "No stocktake performed" msgstr "" #: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1915 +#: templates/js/translated/stock.js:1951 msgid "stock item" msgstr "" @@ -9469,7 +9564,7 @@ msgid "New Location" msgstr "" #: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2536 +#: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" @@ -10063,7 +10158,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:37 msgid "New Location Type" msgstr "" @@ -10120,7 +10215,7 @@ msgstr "" msgid "Stock Settings" msgstr "" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:33 msgid "Stock Location Types" msgstr "" @@ -10662,7 +10757,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "" @@ -10676,7 +10771,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "" @@ -11051,62 +11146,66 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "" @@ -11389,7 +11488,7 @@ msgstr "" #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 -#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11401,7 +11500,7 @@ msgstr "" msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006 +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" @@ -11449,29 +11548,29 @@ msgstr "" msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "" @@ -11804,15 +11903,15 @@ msgstr "" msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3087 +#: templates/js/translated/forms.js:3103 msgid "Select Columns" msgstr "" @@ -12289,7 +12388,7 @@ msgid "No category" msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 -#: templates/js/translated/stock.js:2633 +#: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" @@ -12301,7 +12400,7 @@ msgstr "" msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" @@ -12313,64 +12412,64 @@ msgstr "" msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" @@ -12907,7 +13006,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1737 +#: templates/js/translated/stock.js:1773 msgid "Shipped to customer" msgstr "" @@ -13165,7 +13264,7 @@ msgstr "" msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" @@ -13189,248 +13288,256 @@ msgstr "" msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1440 +#: templates/js/translated/stock.js:1447 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1443 +#: templates/js/translated/stock.js:1450 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1466 +#: templates/js/translated/stock.js:1473 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1530 +#: templates/js/translated/stock.js:1537 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1677 +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1733 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1729 +#: templates/js/translated/stock.js:1765 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1769 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1741 +#: templates/js/translated/stock.js:1777 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1747 +#: templates/js/translated/stock.js:1783 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1839 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1848 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:1897 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1916 +#: templates/js/translated/stock.js:1952 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1921 +#: templates/js/translated/stock.js:1957 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1932 +#: templates/js/translated/stock.js:1968 msgid "Stock Actions" msgstr "" -#: templates/js/translated/stock.js:1976 +#: templates/js/translated/stock.js:2012 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2054 +#: templates/js/translated/stock.js:2090 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2059 +#: templates/js/translated/stock.js:2095 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2062 +#: templates/js/translated/stock.js:2098 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2065 +#: templates/js/translated/stock.js:2101 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2067 +#: templates/js/translated/stock.js:2103 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2069 +#: templates/js/translated/stock.js:2105 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2072 +#: templates/js/translated/stock.js:2108 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2074 +#: templates/js/translated/stock.js:2110 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2114 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2080 +#: templates/js/translated/stock.js:2116 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2085 +#: templates/js/translated/stock.js:2121 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2087 +#: templates/js/translated/stock.js:2123 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2089 +#: templates/js/translated/stock.js:2125 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2129 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2258 +#: templates/js/translated/stock.js:2294 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2305 +#: templates/js/translated/stock.js:2341 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2433 +#: templates/js/translated/stock.js:2469 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2573 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2692 +#: templates/js/translated/stock.js:2728 msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2810 +#: templates/js/translated/stock.js:2846 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2814 +#: templates/js/translated/stock.js:2850 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:2862 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2848 +#: templates/js/translated/stock.js:2884 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2865 +#: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2880 +#: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2897 +#: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2914 +#: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3005 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2977 +#: templates/js/translated/stock.js:3013 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:3049 +#: templates/js/translated/stock.js:3085 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139 +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:3161 +#: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:3182 +#: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:3183 +#: 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:3185 +#: 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:3186 +#: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:3187 +#: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:3188 +#: 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:3201 +#: templates/js/translated/stock.js:3237 msgid "Select part to install" msgstr "" -#: templates/js/translated/stock.js:3264 +#: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" msgstr "" -#: templates/js/translated/stock.js:3277 +#: templates/js/translated/stock.js:3313 msgid "Selected stock items" msgstr "" -#: templates/js/translated/stock.js:3281 +#: templates/js/translated/stock.js:3317 msgid "Change Stock Status" msgstr "" diff --git a/InvenTree/locale/sl/LC_MESSAGES/django.po b/InvenTree/locale/sl/LC_MESSAGES/django.po index 710a9e9ef2..a3a6270d91 100644 --- a/InvenTree/locale/sl/LC_MESSAGES/django.po +++ b/InvenTree/locale/sl/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 04:05+0000\n" -"PO-Revision-Date: 2024-02-28 07:23\n" +"POT-Creation-Date: 2024-03-19 01:26+0000\n" +"PO-Revision-Date: 2024-03-19 11:52\n" "Last-Translator: \n" "Language-Team: Slovenian\n" "Language: sl_SI\n" @@ -30,20 +30,20 @@ msgstr "Uporabnik nima dovoljenja pogleda tega modela" msgid "Invalid unit provided ({unit})" msgstr "" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "Vrednost ni vnesena" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "Ni mogoče pretvoriti {original} v {unit}" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" msgstr "Vnesena napačna količina" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" msgstr "Vnesena napačna količina ({exc})" @@ -64,18 +64,18 @@ msgstr "Vnesi datum" #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 #: templates/js/translated/return_order.js:776 #: templates/js/translated/sales_order.js:1067 #: templates/js/translated/sales_order.js:1982 -#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 msgid "Notes" msgstr "Zapiski" @@ -132,42 +132,42 @@ msgstr "Domena epošte ni podprta." msgid "Registration is disabled." msgstr "Registracija je onemogočena." -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "Podana napačna količina" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "Prazno polje serijske številke" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "Dvojna serijska številka" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "Neveljavni doseg skupine: {group}" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "Doseg skupine {group} presega dovoljene količine ({expected_quantity})" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "Nepravilno zaporedje skupine: {group}" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "Serijske številke niso najdene" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "Število unikatnih serijskih številk ({len(serials)}) se mora ujemati s količino ({expected_quantity})" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "Odstranite oznako HTML iz te vrednosti" @@ -203,131 +203,135 @@ msgstr "Oddaljeni server vrnil prazen odziv" msgid "Supplied URL is not a valid image file" msgstr "Podani URL ni veljavna slikovna datoteka" -#: InvenTree/locales.py:16 +#: InvenTree/locales.py:18 msgid "Bulgarian" msgstr "" -#: InvenTree/locales.py:17 +#: InvenTree/locales.py:19 msgid "Czech" msgstr "Češko" -#: InvenTree/locales.py:18 +#: InvenTree/locales.py:20 msgid "Danish" msgstr "Danščina" -#: InvenTree/locales.py:19 +#: InvenTree/locales.py:21 msgid "German" msgstr "Nemščina" -#: InvenTree/locales.py:20 +#: InvenTree/locales.py:22 msgid "Greek" msgstr "Grščina" -#: InvenTree/locales.py:21 +#: InvenTree/locales.py:23 msgid "English" msgstr "Angleščina" -#: InvenTree/locales.py:22 +#: InvenTree/locales.py:24 msgid "Spanish" msgstr "Španščina" -#: InvenTree/locales.py:23 +#: InvenTree/locales.py:25 msgid "Spanish (Mexican)" msgstr "Španščina (Mehiško)" -#: InvenTree/locales.py:24 +#: InvenTree/locales.py:26 msgid "Farsi / Persian" msgstr "Farsi / Perzijsko" -#: InvenTree/locales.py:25 +#: InvenTree/locales.py:27 msgid "Finnish" msgstr "" -#: InvenTree/locales.py:26 +#: InvenTree/locales.py:28 msgid "French" msgstr "Francoščina" -#: InvenTree/locales.py:27 +#: InvenTree/locales.py:29 msgid "Hebrew" msgstr "Hebrejščina" -#: InvenTree/locales.py:28 +#: InvenTree/locales.py:30 msgid "Hindi" msgstr "" -#: InvenTree/locales.py:29 +#: InvenTree/locales.py:31 msgid "Hungarian" msgstr "Madžarščina" -#: InvenTree/locales.py:30 +#: InvenTree/locales.py:32 msgid "Italian" msgstr "Italijanščina" -#: InvenTree/locales.py:31 +#: InvenTree/locales.py:33 msgid "Japanese" msgstr "Japonščina" -#: InvenTree/locales.py:32 +#: InvenTree/locales.py:34 msgid "Korean" msgstr "Korejščina" -#: InvenTree/locales.py:33 +#: InvenTree/locales.py:35 +msgid "Latvian" +msgstr "" + +#: InvenTree/locales.py:36 msgid "Dutch" msgstr "Nizozemščina" -#: InvenTree/locales.py:34 +#: InvenTree/locales.py:37 msgid "Norwegian" msgstr "Norveščina" -#: InvenTree/locales.py:35 +#: InvenTree/locales.py:38 msgid "Polish" msgstr "Poljščina" -#: InvenTree/locales.py:36 +#: InvenTree/locales.py:39 msgid "Portuguese" msgstr "Portugalščina" -#: InvenTree/locales.py:37 +#: InvenTree/locales.py:40 msgid "Portuguese (Brazilian)" msgstr "Portugalščina (Brazilsko)" -#: InvenTree/locales.py:38 +#: InvenTree/locales.py:41 msgid "Russian" msgstr "Ruščina" -#: InvenTree/locales.py:39 +#: InvenTree/locales.py:42 msgid "Slovak" msgstr "" -#: InvenTree/locales.py:40 +#: InvenTree/locales.py:43 msgid "Slovenian" msgstr "Slovenščina" -#: InvenTree/locales.py:41 +#: InvenTree/locales.py:44 msgid "Serbian" msgstr "" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:45 msgid "Swedish" msgstr "Švedščina" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:46 msgid "Thai" msgstr "Tajščina" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:47 msgid "Turkish" msgstr "Turščina" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:48 msgid "Vietnamese" msgstr "Vietnamščina" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:49 msgid "Chinese (Simplified)" msgstr "" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:50 msgid "Chinese (Traditional)" msgstr "" @@ -391,7 +395,7 @@ msgstr "Manjka datoteka" msgid "Missing external link" msgstr "Manjka zunanja povezava" -#: InvenTree/models.py:559 stock/models.py:2446 +#: InvenTree/models.py:559 stock/models.py:2449 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -401,7 +405,7 @@ msgstr "Priloga" msgid "Select file to attach" msgstr "Izberite prilogo" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -432,13 +436,13 @@ msgstr "Komentar" msgid "File comment" msgstr "Komentar datoteke" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:3000 users/models.py:100 +#: templates/js/translated/stock.js:3036 users/models.py:100 msgid "User" msgstr "Uporabnik" @@ -479,10 +483,10 @@ msgstr "" msgid "Invalid choice" msgstr "Nedovoljena izbira" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -495,7 +499,7 @@ msgstr "Nedovoljena izbira" #: templates/js/translated/company.js:1155 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Ime" @@ -506,10 +510,10 @@ msgstr "Ime" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -523,7 +527,7 @@ msgstr "Ime" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -531,8 +535,8 @@ msgstr "Ime" #: templates/js/translated/return_order.js:314 #: templates/js/translated/sales_order.js:802 #: templates/js/translated/sales_order.js:1812 -#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021 -#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "Opis" @@ -545,7 +549,7 @@ msgid "parent" msgstr "nadrejen" #: InvenTree/models.py:916 templates/js/translated/part.js:2794 -#: templates/js/translated/stock.js:2721 +#: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Pot" @@ -581,7 +585,7 @@ msgstr "Napaka strežnika" msgid "An error has been logged by the server." msgstr "Zaznana napaka na strežniku." -#: InvenTree/serializers.py:62 part/models.py:4134 +#: InvenTree/serializers.py:62 part/models.py:4143 msgid "Must be a valid number" msgstr "Mora biti veljavna številka" @@ -596,89 +600,89 @@ msgstr "" msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:436 +#: InvenTree/serializers.py:441 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:448 +#: InvenTree/serializers.py:453 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:467 +#: InvenTree/serializers.py:472 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:469 +#: InvenTree/serializers.py:474 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:476 +#: InvenTree/serializers.py:481 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:537 +#: InvenTree/serializers.py:542 msgid "Filename" msgstr "Ime datoteke" -#: InvenTree/serializers.py:571 +#: InvenTree/serializers.py:576 msgid "Invalid value" msgstr "Neveljavna vrednost" -#: InvenTree/serializers.py:591 +#: InvenTree/serializers.py:596 msgid "Data File" msgstr "Podatki datoteke" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:597 msgid "Select data file for upload" msgstr "Izberite datoteke za naložiti" -#: InvenTree/serializers.py:609 +#: InvenTree/serializers.py:614 msgid "Unsupported file type" msgstr "Nepodprta vrsta datotek" -#: InvenTree/serializers.py:615 +#: InvenTree/serializers.py:620 msgid "File is too large" msgstr "Datoteka je prevelika" -#: InvenTree/serializers.py:636 +#: InvenTree/serializers.py:641 msgid "No columns found in file" msgstr "V datoteki ni bilo najdenih stolpcev" -#: InvenTree/serializers.py:639 +#: InvenTree/serializers.py:644 msgid "No data rows found in file" msgstr "V datoteki ni bilo njadenih vrstic" -#: InvenTree/serializers.py:752 +#: InvenTree/serializers.py:757 msgid "No data rows provided" msgstr "Niso bile podane vrste s podatki" -#: InvenTree/serializers.py:755 +#: InvenTree/serializers.py:760 msgid "No data columns supplied" msgstr "Niso bili podani stolpci s podatki" -#: InvenTree/serializers.py:822 +#: InvenTree/serializers.py:827 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Manjka obvezni stolpec: '{name}'" -#: InvenTree/serializers.py:831 +#: InvenTree/serializers.py:836 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Dvojni stolpec: '{col}'" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:859 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:855 +#: InvenTree/serializers.py:860 msgid "URL of remote image file" msgstr "Povezava do oddaljene slike" -#: InvenTree/serializers.py:873 +#: InvenTree/serializers.py:878 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:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "Nadzor dela v ozadju neuspel" @@ -818,7 +822,7 @@ msgstr "Razdeljena od nadrejene postavke" msgid "Split child item" msgstr "Razdeljena podrejena postavka" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 msgid "Merged stock items" msgstr "Združena zaloga postavk" @@ -838,7 +842,7 @@ msgstr "Nalog za izgradnjo končan" msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 msgid "Consumed by build order" msgstr "Porabljeno v nalogu za izgradnjo" @@ -938,14 +942,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:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -960,7 +964,7 @@ msgid "Tracked" msgstr "" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -985,7 +989,7 @@ msgstr "" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "Nalog izgradnje" @@ -1014,7 +1018,7 @@ msgstr "Referenca naloga izgradnje" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1044,11 +1048,11 @@ msgstr "Nalog izgradnje na katerega se ta izgradnaj nanaša" #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1059,7 +1063,7 @@ msgstr "Nalog izgradnje na katerega se ta izgradnaj nanaša" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:267 stock/serializers.py:689 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1086,9 +1090,9 @@ msgstr "Nalog izgradnje na katerega se ta izgradnaj nanaša" #: templates/js/translated/sales_order.js:1598 #: templates/js/translated/sales_order.js:1796 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960 -#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054 -#: templates/js/translated/stock.js:3200 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 msgid "Part" msgstr "Del" @@ -1146,8 +1150,8 @@ msgstr "Status izgradnje" msgid "Build status code" msgstr "Koda statusa izgradnje" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Številka serije" @@ -1242,53 +1246,53 @@ msgstr "" msgid "Project code for this build order" msgstr "" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Nalog izgradnje {build} je dokončan" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "Nalog izgradnej dokončan" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "Ni določena izgradnja" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "Igradnja je že dokončana" -#: build/models.py:789 +#: build/models.py:805 msgid "Build output does not match Build Order" msgstr "Izgradnja se ne ujema s nalogom izdelave" -#: build/models.py:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" msgstr "" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1298,7 +1302,7 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:463 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1310,7 +1314,7 @@ msgstr "" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1325,43 +1329,43 @@ msgstr "" #: templates/js/translated/sales_order.js:1698 #: templates/js/translated/sales_order.js:1824 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 -#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985 -#: templates/js/translated/stock.js:3068 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "Količina" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1381 +#: build/models.py:1397 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:1390 +#: build/models.py:1406 #, 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:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "Preveč zaloge je prestavljene" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "Prestavljena količina mora biti večja od 0" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "Količina za zalogo s serijsko številko mora biti 1" -#: build/models.py:1473 +#: build/models.py:1489 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 @@ -1372,23 +1376,23 @@ msgstr "" #: templates/js/translated/sales_order.js:1605 #: templates/js/translated/sales_order.js:1692 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 -#: templates/js/translated/stock.js:2941 +#: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "Postavka zaloge" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "Izvorna postavka zaloge" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "Količina zaloge za prestavljanje za izgradnjo" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "Inštaliraj v" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "Destinacija postavke zaloge" @@ -1425,8 +1429,8 @@ msgstr "" msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" @@ -1451,10 +1455,10 @@ msgstr "" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1466,8 +1470,8 @@ msgstr "" #: templates/js/translated/sales_order.js:1627 #: templates/js/translated/sales_order.js:1706 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164 -#: templates/js/translated/stock.js:2835 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 msgid "Location" msgstr "" @@ -1493,16 +1497,16 @@ msgstr "" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 #: templates/js/translated/purchase_order.js:1723 #: templates/js/translated/return_order.js:331 #: templates/js/translated/sales_order.js:819 -#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959 -#: templates/js/translated/stock.js:3084 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 msgid "Status" msgstr "" @@ -1566,7 +1570,7 @@ msgstr "" msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "" @@ -1602,11 +1606,11 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1065 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" @@ -1619,7 +1623,7 @@ msgstr "" msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "" @@ -1659,44 +1663,45 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 #: stock/api.py:745 msgid "BOM Item" msgstr "" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1862,7 +1867,7 @@ msgstr "" #: templates/js/translated/pricing.js:929 #: templates/js/translated/sales_order.js:769 #: templates/js/translated/sales_order.js:992 -#: templates/js/translated/stock.js:2888 +#: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "" @@ -1920,8 +1925,8 @@ msgstr "" #: templates/js/translated/build.js:1377 #: templates/js/translated/model_renderers.js:235 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153 -#: templates/js/translated/stock.js:3091 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" @@ -1990,27 +1995,31 @@ msgstr "" msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:210 -msgid "Incomplete Build Outputs" -msgstr "" - -#: build/templates/build/detail.html:214 -msgid "Create new build output" +#: 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:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2026,15 +2035,15 @@ msgstr "" msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" msgstr "" @@ -2112,1390 +2121,1414 @@ msgstr "" msgid "User or group responsible for this project" msgstr "" -#: common/models.py:737 +#: common/models.py:744 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:741 +#: common/models.py:748 msgid "Settings value" msgstr "" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "" -#: common/models.py:1231 +#: common/models.py:1238 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1283 +#: common/models.py:1290 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "" -#: common/models.py:1298 +#: common/models.py:1305 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "" -#: common/models.py:1305 +#: common/models.py:1312 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "" -#: common/models.py:1332 +#: common/models.py:1339 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "" -#: common/models.py:1339 +#: common/models.py:1346 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "" -#: common/models.py:1346 +#: common/models.py:1353 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1352 +#: common/models.py:1359 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1360 +#: common/models.py:1367 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1369 +#: common/models.py:1376 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1378 +#: common/models.py:1385 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1386 +#: common/models.py:1393 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1399 +#: common/models.py:1406 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "" -#: common/models.py:1411 +#: common/models.py:1418 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1415 +#: common/models.py:1422 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1421 +#: common/models.py:1428 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1427 +#: common/models.py:1434 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1433 +#: common/models.py:1440 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1439 +#: common/models.py:1446 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1505 +#: common/models.py:1512 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1512 +#: common/models.py:1519 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "" -#: common/models.py:1525 +#: common/models.py:1532 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1526 +#: common/models.py:1533 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1530 +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1532 +#: common/models.py:1539 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1540 +#: common/models.py:1547 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1548 +#: common/models.py:1555 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1564 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1580 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1588 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1595 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1603 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1611 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1618 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1632 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1645 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: 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:202 msgid "Page Size" msgstr "" -#: common/models.py:1651 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1657 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1664 +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1671 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1677 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1692 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1704 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1711 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1719 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1725 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1731 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1736 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1741 +#: 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 "Build Order Reference Pattern" msgstr "" -#: common/models.py:1743 +#: common/models.py:1764 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1757 +#: common/models.py:1778 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1765 +#: common/models.py:1786 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1773 +#: common/models.py:1794 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1780 +#: common/models.py:1801 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1787 +#: common/models.py:1808 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1795 +#: common/models.py:1816 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1803 +#: common/models.py:1824 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1811 +#: common/models.py:1832 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "" -#: common/models.py:1825 +#: common/models.py:1846 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1838 +#: common/models.py:1859 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1844 +#: common/models.py:1865 msgid "Email required" msgstr "" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1852 +#: common/models.py:1873 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "" -#: common/models.py:1859 +#: common/models.py:1880 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "" -#: common/models.py:1865 +#: common/models.py:1886 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "" -#: common/models.py:1879 +#: common/models.py:1900 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1892 +#: common/models.py:1913 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1929 +#: common/models.py:1950 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "" -#: common/models.py:1936 +#: common/models.py:1957 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1950 +#: common/models.py:1971 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1958 +#: common/models.py:1979 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1966 +#: common/models.py:1987 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1974 +#: common/models.py:1995 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2029 common/models.py:2429 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2043 +#: common/models.py:2070 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2045 +#: common/models.py:2072 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2051 +#: common/models.py:2078 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2052 +#: common/models.py:2079 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2057 +#: common/models.py:2084 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2058 +#: common/models.py:2085 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2063 +#: common/models.py:2090 msgid "Show latest parts" msgstr "" -#: common/models.py:2064 +#: common/models.py:2091 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2069 +#: common/models.py:2096 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2070 +#: common/models.py:2097 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2075 +#: common/models.py:2102 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2076 +#: common/models.py:2103 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2081 +#: common/models.py:2108 msgid "Show low stock" msgstr "" -#: common/models.py:2082 +#: common/models.py:2109 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2087 +#: common/models.py:2114 msgid "Show depleted stock" msgstr "" -#: common/models.py:2088 +#: common/models.py:2115 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2093 +#: common/models.py:2120 msgid "Show needed stock" msgstr "" -#: common/models.py:2094 +#: common/models.py:2121 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2099 +#: common/models.py:2126 msgid "Show expired stock" msgstr "" -#: common/models.py:2100 +#: common/models.py:2127 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2105 +#: common/models.py:2132 msgid "Show stale stock" msgstr "" -#: common/models.py:2106 +#: common/models.py:2133 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2111 +#: common/models.py:2138 msgid "Show pending builds" msgstr "" -#: common/models.py:2112 +#: common/models.py:2139 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2117 +#: common/models.py:2144 msgid "Show overdue builds" msgstr "" -#: common/models.py:2118 +#: common/models.py:2145 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2123 +#: common/models.py:2150 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2124 +#: common/models.py:2151 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2129 +#: common/models.py:2156 msgid "Show overdue POs" msgstr "" -#: common/models.py:2130 +#: common/models.py:2157 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2135 +#: common/models.py:2162 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2136 +#: common/models.py:2163 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2141 +#: common/models.py:2168 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2142 +#: common/models.py:2169 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2147 +#: common/models.py:2174 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2148 +#: common/models.py:2175 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2153 +#: common/models.py:2180 msgid "Show News" msgstr "" -#: common/models.py:2154 +#: common/models.py:2181 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2159 +#: common/models.py:2186 msgid "Inline label display" msgstr "" -#: common/models.py:2161 +#: common/models.py:2188 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2167 +#: common/models.py:2194 msgid "Default label printer" msgstr "" -#: common/models.py:2169 +#: common/models.py:2196 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2175 +#: common/models.py:2202 msgid "Inline report display" msgstr "" -#: common/models.py:2177 +#: common/models.py:2204 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2183 +#: common/models.py:2210 msgid "Search Parts" msgstr "" -#: common/models.py:2184 +#: common/models.py:2211 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2189 +#: common/models.py:2216 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2190 +#: common/models.py:2217 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2195 +#: common/models.py:2222 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2196 +#: common/models.py:2223 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2201 +#: common/models.py:2228 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2202 +#: common/models.py:2229 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2207 +#: common/models.py:2234 msgid "Search Categories" msgstr "" -#: common/models.py:2208 +#: common/models.py:2235 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2213 +#: common/models.py:2240 msgid "Search Stock" msgstr "" -#: common/models.py:2214 +#: common/models.py:2241 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2219 +#: common/models.py:2246 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2221 +#: common/models.py:2248 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2227 +#: common/models.py:2254 msgid "Search Locations" msgstr "" -#: common/models.py:2228 +#: common/models.py:2255 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2233 +#: common/models.py:2260 msgid "Search Companies" msgstr "" -#: common/models.py:2234 +#: common/models.py:2261 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2239 +#: common/models.py:2266 msgid "Search Build Orders" msgstr "" -#: common/models.py:2240 +#: common/models.py:2267 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2245 +#: common/models.py:2272 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2246 +#: common/models.py:2273 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2251 +#: common/models.py:2278 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2253 +#: common/models.py:2280 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2259 +#: common/models.py:2286 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2260 +#: common/models.py:2287 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2265 +#: common/models.py:2292 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2267 +#: common/models.py:2294 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2273 +#: common/models.py:2300 msgid "Search Return Orders" msgstr "" -#: common/models.py:2274 +#: common/models.py:2301 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2279 +#: common/models.py:2306 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2281 +#: common/models.py:2308 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2287 +#: common/models.py:2314 msgid "Search Preview Results" msgstr "" -#: common/models.py:2289 +#: common/models.py:2316 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2295 +#: common/models.py:2322 msgid "Regex Search" msgstr "" -#: common/models.py:2296 +#: common/models.py:2323 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2301 +#: common/models.py:2328 msgid "Whole Word Search" msgstr "" -#: common/models.py:2302 +#: common/models.py:2329 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2307 +#: common/models.py:2334 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2308 +#: common/models.py:2335 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2313 +#: common/models.py:2340 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2314 +#: common/models.py:2341 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2319 +#: common/models.py:2346 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2320 +#: common/models.py:2347 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2325 +#: common/models.py:2352 msgid "Date Format" msgstr "" -#: common/models.py:2326 +#: common/models.py:2353 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2366 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2340 +#: common/models.py:2367 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2372 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2347 +#: common/models.py:2374 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2353 +#: common/models.py:2380 msgid "Table String Length" msgstr "" -#: common/models.py:2355 +#: common/models.py:2382 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2361 +#: common/models.py:2388 msgid "Default part label template" msgstr "" -#: common/models.py:2362 +#: common/models.py:2389 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2367 +#: common/models.py:2394 msgid "Default stock item template" msgstr "" -#: common/models.py:2369 +#: common/models.py:2396 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2375 +#: common/models.py:2402 msgid "Default stock location label template" msgstr "" -#: common/models.py:2377 +#: common/models.py:2404 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2383 +#: common/models.py:2410 msgid "Receive error reports" msgstr "" -#: common/models.py:2384 +#: common/models.py:2411 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2389 +#: common/models.py:2416 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2417 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2460 msgid "Price break quantity" msgstr "" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3503,23 +3536,23 @@ msgstr "" msgid "Price" msgstr "" -#: common/models.py:2441 +#: common/models.py:2468 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2639 common/models.py:2824 msgid "Endpoint" msgstr "" -#: common/models.py:2613 +#: common/models.py:2640 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2623 +#: common/models.py:2650 msgid "Name for this webhook" msgstr "" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3529,101 +3562,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2627 +#: common/models.py:2654 msgid "Is this webhook active" msgstr "" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2670 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2644 +#: common/models.py:2671 msgid "Token for access" msgstr "" -#: common/models.py:2652 +#: common/models.py:2679 msgid "Secret" msgstr "" -#: common/models.py:2653 +#: common/models.py:2680 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2761 +#: common/models.py:2788 msgid "Message ID" msgstr "" -#: common/models.py:2762 +#: common/models.py:2789 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2770 +#: common/models.py:2797 msgid "Host" msgstr "" -#: common/models.py:2771 +#: common/models.py:2798 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2779 +#: common/models.py:2806 msgid "Header" msgstr "" -#: common/models.py:2780 +#: common/models.py:2807 msgid "Header of this message" msgstr "" -#: common/models.py:2787 +#: common/models.py:2814 msgid "Body" msgstr "" -#: common/models.py:2788 +#: common/models.py:2815 msgid "Body of this message" msgstr "" -#: common/models.py:2798 +#: common/models.py:2825 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2803 +#: common/models.py:2830 msgid "Worked on" msgstr "" -#: common/models.py:2804 +#: common/models.py:2831 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2930 +#: common/models.py:2957 msgid "Id" msgstr "" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2959 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2963 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2965 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2967 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Read" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Was this news item read?" msgstr "" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2987 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3633,31 +3666,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2960 +#: common/models.py:2987 msgid "Image file" msgstr "" -#: common/models.py:3002 +#: common/models.py:3029 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3021 +#: common/models.py:3048 msgid "Unit name" msgstr "" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3029 +#: common/models.py:3056 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3037 +#: common/models.py:3064 msgid "Unit definition" msgstr "" @@ -3961,7 +3994,7 @@ msgid "Link to address information (external)" msgstr "" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" @@ -3972,7 +4005,7 @@ msgstr "" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3987,7 +4020,7 @@ msgid "Select manufacturer" msgstr "" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4022,9 +4055,9 @@ msgstr "" #: company/models.py:615 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2438 templates/js/translated/company.js:1156 +#: stock/models.py:2441 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1519 msgid "Value" msgstr "" @@ -4033,7 +4066,7 @@ msgid "Parameter value" msgstr "" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4059,7 +4092,7 @@ msgstr "" #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4076,7 +4109,7 @@ msgstr "" msgid "Select supplier" msgstr "" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "" @@ -4093,13 +4126,13 @@ msgid "Supplier part description" msgstr "" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:579 msgid "Note" msgstr "" @@ -4112,10 +4145,10 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 -#: templates/js/translated/stock.js:2387 +#: templates/js/translated/stock.js:2423 msgid "Packaging" msgstr "" @@ -4157,7 +4190,7 @@ msgstr "" msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "" @@ -4218,13 +4251,13 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1100 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 #: templates/js/translated/return_order.js:296 #: templates/js/translated/sales_order.js:784 -#: templates/js/translated/stock.js:2923 +#: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:804 msgid "Customer" msgstr "" @@ -4429,8 +4462,9 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "" @@ -4482,7 +4516,7 @@ msgstr "" #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2243 +#: templates/js/translated/stock.js:2279 msgid "Supplier Part" msgstr "" @@ -4528,7 +4562,7 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4577,15 +4611,17 @@ msgstr "" msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 -#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:193 msgid "Stock Items" msgstr "" @@ -4639,8 +4675,8 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" @@ -4665,7 +4701,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "" @@ -4679,8 +4715,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "" @@ -4821,7 +4857,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1674 -#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "" @@ -4830,7 +4866,7 @@ msgstr "" #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 -#: templates/js/translated/stock.js:2905 +#: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "" @@ -4838,11 +4874,11 @@ msgstr "" msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -5029,9 +5065,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2274 +#: templates/js/translated/stock.js:2310 msgid "Purchase Price" msgstr "" @@ -5084,8 +5120,8 @@ msgstr "" msgid "User who checked this shipment" msgstr "" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "" @@ -5133,7 +5169,7 @@ msgstr "" msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "" @@ -5207,159 +5243,159 @@ msgstr "" msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:610 +#: order/serializers.py:632 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1677 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "" @@ -5733,7 +5769,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" @@ -5763,12 +5799,12 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5780,12 +5816,12 @@ msgstr "" #: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 -#: templates/js/translated/stock.js:1999 +#: templates/js/translated/stock.js:2035 msgid "IPN" msgstr "" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" @@ -5861,10 +5897,10 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -5885,17 +5921,17 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3897 msgid "Part IPN" msgstr "" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5973,8 +6009,8 @@ msgstr "" msgid "This option must be selected" msgstr "" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5982,12 +6018,17 @@ msgstr "" msgid "Category" msgstr "" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5995,7 +6036,7 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -6010,7 +6051,8 @@ msgstr "" msgid "Default location for parts in this category" msgstr "" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 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" @@ -6076,7 +6118,7 @@ msgstr "" msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3896 msgid "Part name" msgstr "" @@ -6358,7 +6400,7 @@ msgstr "" #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1732 -#: templates/js/translated/stock.js:2785 +#: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" @@ -6410,586 +6452,602 @@ msgstr "" msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3448 -msgid "Test with this name already exists for this part" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "" -#: part/models.py:3496 +#: part/models.py:3505 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "" -#: part/models.py:3503 +#: part/models.py:3512 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3847 +#: part/models.py:3856 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3885 +#: part/models.py:3894 msgid "Part ID or part name" msgstr "" -#: part/models.py:3886 +#: part/models.py:3895 msgid "Unique part ID value" msgstr "" -#: part/models.py:3888 +#: part/models.py:3897 msgid "Part IPN value" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "Level" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "BOM level" msgstr "" -#: part/models.py:3979 +#: part/models.py:3988 msgid "Select parent part" msgstr "" -#: part/models.py:3989 +#: part/models.py:3998 msgid "Sub part" msgstr "" -#: part/models.py:3990 +#: part/models.py:3999 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4001 +#: part/models.py:4010 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4007 +#: part/models.py:4016 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4013 +#: part/models.py:4022 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4029 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4021 +#: part/models.py:4030 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4028 +#: part/models.py:4037 msgid "BOM item reference" msgstr "" -#: part/models.py:4036 +#: part/models.py:4045 msgid "BOM item notes" msgstr "" -#: part/models.py:4042 +#: part/models.py:4051 msgid "Checksum" msgstr "" -#: part/models.py:4043 +#: part/models.py:4052 msgid "BOM line checksum" msgstr "" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4057 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4049 +#: part/models.py:4058 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4063 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:4055 +#: part/models.py:4064 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4069 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4061 +#: part/models.py:4070 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4146 stock/models.py:649 +#: part/models.py:4155 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4165 part/models.py:4167 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4298 +#: part/models.py:4307 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4319 +#: part/models.py:4328 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4332 +#: part/models.py:4341 msgid "Parent BOM item" msgstr "" -#: part/models.py:4340 +#: part/models.py:4349 msgid "Substitute part" msgstr "" -#: part/models.py:4356 +#: part/models.py:4365 msgid "Part 1" msgstr "" -#: part/models.py:4364 +#: part/models.py:4373 msgid "Part 2" msgstr "" -#: part/models.py:4365 +#: part/models.py:4374 msgid "Select Related Part" msgstr "" -#: part/models.py:4384 +#: part/models.py:4393 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4389 +#: part/models.py:4398 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:432 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:480 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1104 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1078 +#: part/serializers.py:1114 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1088 +#: part/serializers.py:1124 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1647 +#: part/serializers.py:1693 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1659 +#: part/serializers.py:1705 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1694 +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "" @@ -7147,7 +7205,7 @@ msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/stock.js:2179 users/models.py:191 +#: templates/js/translated/stock.js:2215 users/models.py:191 msgid "Stocktake" msgstr "" @@ -7221,7 +7279,7 @@ msgid "Validate BOM" msgstr "" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "" @@ -7405,7 +7463,7 @@ msgstr "" msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "" @@ -7509,7 +7567,7 @@ msgstr "" #: templates/InvenTree/settings/sidebar.html:51 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 -#: templates/js/translated/stock.js:2033 templates/navbar.html:31 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7555,7 +7613,7 @@ msgstr "" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 -#: templates/js/translated/stock.js:2209 +#: templates/js/translated/stock.js:2245 msgid "Last Updated" msgstr "" @@ -7999,7 +8057,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "" @@ -8307,16 +8365,16 @@ msgstr "" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "" @@ -8336,103 +8394,111 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" msgstr "" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" msgstr "" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8499,12 +8565,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1492 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Result" msgstr "" @@ -8531,7 +8597,7 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:168 #: stock/admin.py:162 templates/js/translated/stock.js:700 -#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110 msgid "Serial" msgstr "" @@ -8615,7 +8681,7 @@ msgstr "" #: stock/admin.py:256 stock/models.py:886 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2193 users/models.py:113 +#: templates/js/translated/stock.js:2229 users/models.py:113 msgid "Expiry Date" msgstr "" @@ -8713,7 +8779,7 @@ msgstr "" msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:174 templates/js/translated/stock.js:2745 +#: stock/models.py:174 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" @@ -8722,7 +8788,7 @@ msgstr "" msgid "This is an external stock location" msgstr "" -#: stock/models.py:181 templates/js/translated/stock.js:2754 +#: stock/models.py:181 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" @@ -8739,7 +8805,7 @@ msgstr "" msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:290 msgid "Stock item cannot be created for virtual parts" msgstr "" @@ -8784,7 +8850,7 @@ msgstr "" msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1351 msgid "Packaging this stock item is stored in" msgstr "" @@ -8796,7 +8862,7 @@ msgstr "" msgid "Serial number for this item" msgstr "" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1334 msgid "Batch code for this stock item" msgstr "" @@ -8873,7 +8939,7 @@ msgstr "" msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:529 msgid "Serial numbers already exist" msgstr "" @@ -8905,7 +8971,7 @@ msgstr "" msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1240 msgid "Duplicate stock items" msgstr "" @@ -8929,207 +8995,236 @@ msgstr "" msgid "Entry notes" msgstr "" -#: stock/models.py:2399 +#: stock/models.py:2402 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2405 +#: stock/models.py:2408 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Test result" msgstr "" -#: stock/models.py:2439 +#: stock/models.py:2442 msgid "Test output value" msgstr "" -#: stock/models.py:2447 +#: stock/models.py:2450 msgid "Test result attachment" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2454 msgid "Test notes" msgstr "" -#: stock/serializers.py:96 +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "" + +#: stock/models.py:2463 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2469 +msgid "Started" +msgstr "" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:100 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:119 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 +#: stock/serializers.py:151 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:184 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:267 +#: stock/serializers.py:282 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:380 +#: stock/serializers.py:402 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:442 +#: stock/serializers.py:464 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:455 +#: stock/serializers.py:477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:462 +#: stock/serializers.py:484 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:480 +#: stock/serializers.py:502 msgid "Optional note field" msgstr "" -#: stock/serializers.py:490 +#: stock/serializers.py:512 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:545 +#: stock/serializers.py:567 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:574 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:553 +#: stock/serializers.py:575 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:566 +#: stock/serializers.py:588 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:596 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:581 +#: stock/serializers.py:607 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:620 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:628 +#: stock/serializers.py:655 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:663 +#: stock/serializers.py:690 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:676 +#: stock/serializers.py:703 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:693 +#: stock/serializers.py:720 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:724 +#: stock/serializers.py:751 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:761 +#: stock/serializers.py:788 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:767 +#: stock/serializers.py:794 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1036 +#: stock/serializers.py:1069 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1040 +#: stock/serializers.py:1073 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1044 +#: stock/serializers.py:1077 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1068 +#: stock/serializers.py:1101 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1074 +#: stock/serializers.py:1107 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1082 +#: stock/serializers.py:1115 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1125 stock/serializers.py:1379 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1171 +#: stock/serializers.py:1204 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1176 +#: stock/serializers.py:1209 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1177 +#: stock/serializers.py:1210 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1182 +#: stock/serializers.py:1215 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1183 +#: stock/serializers.py:1216 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1193 +#: stock/serializers.py:1226 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1260 +#: stock/serializers.py:1293 msgid "No Change" msgstr "" -#: stock/serializers.py:1289 +#: stock/serializers.py:1322 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1308 +#: stock/serializers.py:1341 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1336 +#: stock/serializers.py:1369 msgid "Stock transaction notes" msgstr "" @@ -9154,7 +9249,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 msgid "Delete Test Data" msgstr "" @@ -9170,15 +9265,15 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:274 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 msgid "Add Test Result" msgstr "" @@ -9201,17 +9296,17 @@ msgid "Stock adjustment actions" msgstr "" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 msgid "Count stock" msgstr "" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:1803 msgid "Add stock" msgstr "" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1776 +#: templates/js/translated/stock.js:1812 msgid "Remove stock" msgstr "" @@ -9220,12 +9315,12 @@ msgid "Serialize stock" msgstr "" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 msgid "Transfer stock" msgstr "" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1884 msgid "Assign to customer" msgstr "" @@ -9364,7 +9459,7 @@ msgid "No stocktake performed" msgstr "" #: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1915 +#: templates/js/translated/stock.js:1951 msgid "stock item" msgstr "" @@ -9469,7 +9564,7 @@ msgid "New Location" msgstr "" #: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2536 +#: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" @@ -10063,7 +10158,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:37 msgid "New Location Type" msgstr "" @@ -10120,7 +10215,7 @@ msgstr "" msgid "Stock Settings" msgstr "" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:33 msgid "Stock Location Types" msgstr "" @@ -10662,7 +10757,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "" @@ -10676,7 +10771,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "" @@ -11051,62 +11146,66 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "" @@ -11389,7 +11488,7 @@ msgstr "" #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 -#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11401,7 +11500,7 @@ msgstr "" msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006 +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" @@ -11449,29 +11548,29 @@ msgstr "" msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "" @@ -11804,15 +11903,15 @@ msgstr "" msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3087 +#: templates/js/translated/forms.js:3103 msgid "Select Columns" msgstr "" @@ -12289,7 +12388,7 @@ msgid "No category" msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 -#: templates/js/translated/stock.js:2633 +#: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" @@ -12301,7 +12400,7 @@ msgstr "" msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" @@ -12313,64 +12412,64 @@ msgstr "" msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" @@ -12907,7 +13006,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1737 +#: templates/js/translated/stock.js:1773 msgid "Shipped to customer" msgstr "" @@ -13165,7 +13264,7 @@ msgstr "" msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" @@ -13189,248 +13288,256 @@ msgstr "" msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1440 +#: templates/js/translated/stock.js:1447 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1443 +#: templates/js/translated/stock.js:1450 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1466 +#: templates/js/translated/stock.js:1473 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1530 +#: templates/js/translated/stock.js:1537 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1677 +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1733 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1729 +#: templates/js/translated/stock.js:1765 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1769 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1741 +#: templates/js/translated/stock.js:1777 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1747 +#: templates/js/translated/stock.js:1783 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1839 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1848 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:1897 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1916 +#: templates/js/translated/stock.js:1952 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1921 +#: templates/js/translated/stock.js:1957 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1932 +#: templates/js/translated/stock.js:1968 msgid "Stock Actions" msgstr "" -#: templates/js/translated/stock.js:1976 +#: templates/js/translated/stock.js:2012 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2054 +#: templates/js/translated/stock.js:2090 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2059 +#: templates/js/translated/stock.js:2095 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2062 +#: templates/js/translated/stock.js:2098 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2065 +#: templates/js/translated/stock.js:2101 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2067 +#: templates/js/translated/stock.js:2103 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2069 +#: templates/js/translated/stock.js:2105 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2072 +#: templates/js/translated/stock.js:2108 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2074 +#: templates/js/translated/stock.js:2110 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2114 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2080 +#: templates/js/translated/stock.js:2116 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2085 +#: templates/js/translated/stock.js:2121 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2087 +#: templates/js/translated/stock.js:2123 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2089 +#: templates/js/translated/stock.js:2125 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2129 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2258 +#: templates/js/translated/stock.js:2294 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2305 +#: templates/js/translated/stock.js:2341 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2433 +#: templates/js/translated/stock.js:2469 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2573 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2692 +#: templates/js/translated/stock.js:2728 msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2810 +#: templates/js/translated/stock.js:2846 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2814 +#: templates/js/translated/stock.js:2850 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:2862 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2848 +#: templates/js/translated/stock.js:2884 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2865 +#: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2880 +#: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2897 +#: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2914 +#: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3005 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2977 +#: templates/js/translated/stock.js:3013 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:3049 +#: templates/js/translated/stock.js:3085 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139 +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:3161 +#: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:3182 +#: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:3183 +#: 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:3185 +#: 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:3186 +#: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:3187 +#: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:3188 +#: 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:3201 +#: templates/js/translated/stock.js:3237 msgid "Select part to install" msgstr "" -#: templates/js/translated/stock.js:3264 +#: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" msgstr "" -#: templates/js/translated/stock.js:3277 +#: templates/js/translated/stock.js:3313 msgid "Selected stock items" msgstr "" -#: templates/js/translated/stock.js:3281 +#: templates/js/translated/stock.js:3317 msgid "Change Stock Status" msgstr "" diff --git a/InvenTree/locale/sr/LC_MESSAGES/django.po b/InvenTree/locale/sr/LC_MESSAGES/django.po index 4891fe39cc..02edac8885 100644 --- a/InvenTree/locale/sr/LC_MESSAGES/django.po +++ b/InvenTree/locale/sr/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 04:05+0000\n" -"PO-Revision-Date: 2024-02-28 07:23\n" +"POT-Creation-Date: 2024-03-19 01:26+0000\n" +"PO-Revision-Date: 2024-03-20 12:27\n" "Last-Translator: \n" "Language-Team: Serbian (Latin)\n" "Language: sr_CS\n" @@ -30,20 +30,20 @@ msgstr "Korisnik nema dozvolu za pregled ovog modela" msgid "Invalid unit provided ({unit})" msgstr "" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "Nije navedena vrednost" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "Nije moguće konvertovati {original} u {unit}" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" msgstr "Isporučena nevažeća količina" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" msgstr "Isporučena nevažeća količina ({exc})" @@ -64,18 +64,18 @@ msgstr "Unesite datum" #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 #: templates/js/translated/return_order.js:776 #: templates/js/translated/sales_order.js:1067 #: templates/js/translated/sales_order.js:1982 -#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 msgid "Notes" msgstr "Napomene" @@ -132,42 +132,42 @@ msgstr "Navedeni domen adrese e-pošte nije prihvaćen." msgid "Registration is disabled." msgstr "Registracija je onemogućena." -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "Isporučena nevažeća količina" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "Serijski broj nije popunjen" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "Dupliciraj serijski broj" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "Nevažeći raspon grupe: {group}" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "Raspon grupe {group} prelazi dozvoljenu količinu ({expected_quantity})" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "Nevažeća sekvenca grupe: {group}" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "Nisu pronađeni serijski brojevi" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "Broj jedinstvenih serijskih brojeva ({len(serials)}) mora odgovarati količini ({expected_quantity})" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "Uklonite HTML oznake iz ove vrednosti" @@ -203,131 +203,135 @@ msgstr "Udaljeni server vratio je prazan odgovor" msgid "Supplied URL is not a valid image file" msgstr "Navedeni URL nije važeća slikovna datoteka" -#: InvenTree/locales.py:16 +#: InvenTree/locales.py:18 msgid "Bulgarian" msgstr "Bugarski" -#: InvenTree/locales.py:17 +#: InvenTree/locales.py:19 msgid "Czech" msgstr "Češki" -#: InvenTree/locales.py:18 +#: InvenTree/locales.py:20 msgid "Danish" msgstr "Danski" -#: InvenTree/locales.py:19 +#: InvenTree/locales.py:21 msgid "German" msgstr "Nemački" -#: InvenTree/locales.py:20 +#: InvenTree/locales.py:22 msgid "Greek" msgstr "Grčki" -#: InvenTree/locales.py:21 +#: InvenTree/locales.py:23 msgid "English" msgstr "Engleski" -#: InvenTree/locales.py:22 +#: InvenTree/locales.py:24 msgid "Spanish" msgstr "Španski" -#: InvenTree/locales.py:23 +#: InvenTree/locales.py:25 msgid "Spanish (Mexican)" msgstr "Španski (Meksiko)" -#: InvenTree/locales.py:24 +#: InvenTree/locales.py:26 msgid "Farsi / Persian" msgstr "Farsi / Persijski" -#: InvenTree/locales.py:25 +#: InvenTree/locales.py:27 msgid "Finnish" msgstr "Finski" -#: InvenTree/locales.py:26 +#: InvenTree/locales.py:28 msgid "French" msgstr "Francuski" -#: InvenTree/locales.py:27 +#: InvenTree/locales.py:29 msgid "Hebrew" msgstr "Jevrejski" -#: InvenTree/locales.py:28 +#: InvenTree/locales.py:30 msgid "Hindi" msgstr "Hindu" -#: InvenTree/locales.py:29 +#: InvenTree/locales.py:31 msgid "Hungarian" msgstr "Mađarski" -#: InvenTree/locales.py:30 +#: InvenTree/locales.py:32 msgid "Italian" msgstr "Italijanski" -#: InvenTree/locales.py:31 +#: InvenTree/locales.py:33 msgid "Japanese" msgstr "Japanski" -#: InvenTree/locales.py:32 +#: InvenTree/locales.py:34 msgid "Korean" msgstr "Korejski" -#: InvenTree/locales.py:33 +#: InvenTree/locales.py:35 +msgid "Latvian" +msgstr "" + +#: InvenTree/locales.py:36 msgid "Dutch" msgstr "Holandski" -#: InvenTree/locales.py:34 +#: InvenTree/locales.py:37 msgid "Norwegian" msgstr "Norveški" -#: InvenTree/locales.py:35 +#: InvenTree/locales.py:38 msgid "Polish" msgstr "Poljski" -#: InvenTree/locales.py:36 +#: InvenTree/locales.py:39 msgid "Portuguese" msgstr "Portugalski" -#: InvenTree/locales.py:37 +#: InvenTree/locales.py:40 msgid "Portuguese (Brazilian)" msgstr "Portugalski (Brazil)" -#: InvenTree/locales.py:38 +#: InvenTree/locales.py:41 msgid "Russian" msgstr "Ruski" -#: InvenTree/locales.py:39 +#: InvenTree/locales.py:42 msgid "Slovak" msgstr "" -#: InvenTree/locales.py:40 +#: InvenTree/locales.py:43 msgid "Slovenian" msgstr "Slovenski" -#: InvenTree/locales.py:41 +#: InvenTree/locales.py:44 msgid "Serbian" msgstr "Srpski" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:45 msgid "Swedish" msgstr "Švedski" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:46 msgid "Thai" msgstr "Tajlandski" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:47 msgid "Turkish" msgstr "Turski" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:48 msgid "Vietnamese" msgstr "Vijetnamski" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:49 msgid "Chinese (Simplified)" msgstr "Kineski (Uprošćeni)" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:50 msgid "Chinese (Traditional)" msgstr "Kineski (Tradicionalni)" @@ -391,7 +395,7 @@ msgstr "Nedostaje datoteka" msgid "Missing external link" msgstr "Nedostaje eksterni link" -#: InvenTree/models.py:559 stock/models.py:2446 +#: InvenTree/models.py:559 stock/models.py:2449 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -401,7 +405,7 @@ msgstr "Prilog" msgid "Select file to attach" msgstr "Izaberite datoteku za prilog" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -432,13 +436,13 @@ msgstr "Komentar" msgid "File comment" msgstr "Datoteka komentara" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:3000 users/models.py:100 +#: templates/js/translated/stock.js:3036 users/models.py:100 msgid "User" msgstr "Korisnik" @@ -479,10 +483,10 @@ msgstr "Dvostruka imena ne mogu postojati pod istom nadredjenom grupom" msgid "Invalid choice" msgstr "Nevažeći izvor" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -495,7 +499,7 @@ msgstr "Nevažeći izvor" #: templates/js/translated/company.js:1155 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Ime" @@ -506,10 +510,10 @@ msgstr "Ime" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -523,7 +527,7 @@ msgstr "Ime" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -531,8 +535,8 @@ msgstr "Ime" #: templates/js/translated/return_order.js:314 #: templates/js/translated/sales_order.js:802 #: templates/js/translated/sales_order.js:1812 -#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021 -#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "Opis" @@ -545,7 +549,7 @@ msgid "parent" msgstr "nadređeni" #: InvenTree/models.py:916 templates/js/translated/part.js:2794 -#: templates/js/translated/stock.js:2721 +#: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Putanja" @@ -581,7 +585,7 @@ msgstr "Greška servera" msgid "An error has been logged by the server." msgstr "Server je zabležio grešku." -#: InvenTree/serializers.py:62 part/models.py:4134 +#: InvenTree/serializers.py:62 part/models.py:4143 msgid "Must be a valid number" msgstr "Mora biti važeći broj" @@ -596,89 +600,89 @@ msgstr "Valuta" msgid "Select currency from available options" msgstr "Odaberite valutu među dostupnim opcijama" -#: InvenTree/serializers.py:436 +#: InvenTree/serializers.py:441 msgid "You do not have permission to change this user role." msgstr "Nemate dozvolu za promenu ove korisničke uloge." -#: InvenTree/serializers.py:448 +#: InvenTree/serializers.py:453 msgid "Only superusers can create new users" msgstr "Samo superkorisnici mogu kreirati nove korisnike" -#: InvenTree/serializers.py:467 +#: InvenTree/serializers.py:472 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:469 +#: InvenTree/serializers.py:474 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:476 +#: InvenTree/serializers.py:481 msgid "Welcome to InvenTree" msgstr "" -#: InvenTree/serializers.py:537 +#: InvenTree/serializers.py:542 msgid "Filename" msgstr "Ime datoteke" -#: InvenTree/serializers.py:571 +#: InvenTree/serializers.py:576 msgid "Invalid value" msgstr "Nevažeća vrednost" -#: InvenTree/serializers.py:591 +#: InvenTree/serializers.py:596 msgid "Data File" msgstr "Datoteka" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:597 msgid "Select data file for upload" msgstr "Odaberite datoteku za učitavanje" -#: InvenTree/serializers.py:609 +#: InvenTree/serializers.py:614 msgid "Unsupported file type" msgstr "Nije podržan tip datoteke" -#: InvenTree/serializers.py:615 +#: InvenTree/serializers.py:620 msgid "File is too large" msgstr "Prevelika datoteka" -#: InvenTree/serializers.py:636 +#: InvenTree/serializers.py:641 msgid "No columns found in file" msgstr "Nisu pronađene kolone podataka u datoteci" -#: InvenTree/serializers.py:639 +#: InvenTree/serializers.py:644 msgid "No data rows found in file" msgstr "Nisu pronađeni redovi podataka u datoteci" -#: InvenTree/serializers.py:752 +#: InvenTree/serializers.py:757 msgid "No data rows provided" msgstr "Nisu navedeni redovi podataka" -#: InvenTree/serializers.py:755 +#: InvenTree/serializers.py:760 msgid "No data columns supplied" msgstr "Nisu obezbeđene kolone podataka" -#: InvenTree/serializers.py:822 +#: InvenTree/serializers.py:827 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Nedostaje potrebna kolona: '{name}'" -#: InvenTree/serializers.py:831 +#: InvenTree/serializers.py:836 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Duplicirana kolona: '{col}'" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:859 msgid "Remote Image" msgstr "Udaljena slika" -#: InvenTree/serializers.py:855 +#: InvenTree/serializers.py:860 msgid "URL of remote image file" msgstr "URL udaljene slike" -#: InvenTree/serializers.py:873 +#: InvenTree/serializers.py:878 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:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "Provera pozadinskog radnika nije uspjela" @@ -818,7 +822,7 @@ msgstr "Odvoj od nadređene stavke" msgid "Split child item" msgstr "Podeli podređenu stavku" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 msgid "Merged stock items" msgstr "Spojene stavke zaliha" @@ -838,7 +842,7 @@ msgstr "" msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 msgid "Consumed by build order" msgstr "" @@ -938,14 +942,14 @@ msgstr "" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -960,7 +964,7 @@ msgid "Tracked" msgstr "" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -985,7 +989,7 @@ msgstr "" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "Nalog za izradu" @@ -1014,7 +1018,7 @@ msgstr "Reference naloga za pravljenje" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1044,11 +1048,11 @@ msgstr "" #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1059,7 +1063,7 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:267 stock/serializers.py:689 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1086,9 +1090,9 @@ msgstr "" #: templates/js/translated/sales_order.js:1598 #: templates/js/translated/sales_order.js:1796 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960 -#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054 -#: templates/js/translated/stock.js:3200 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 msgid "Part" msgstr "" @@ -1146,8 +1150,8 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" @@ -1242,53 +1246,53 @@ msgstr "" msgid "Project code for this build order" msgstr "" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "" -#: build/models.py:789 +#: build/models.py:805 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" msgstr "" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1298,7 +1302,7 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:463 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1310,7 +1314,7 @@ msgstr "" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1325,43 +1329,43 @@ msgstr "" #: templates/js/translated/sales_order.js:1698 #: templates/js/translated/sales_order.js:1824 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 -#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985 -#: templates/js/translated/stock.js:3068 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1381 +#: build/models.py:1397 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1390 +#: build/models.py:1406 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1473 +#: build/models.py:1489 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 @@ -1372,23 +1376,23 @@ msgstr "" #: templates/js/translated/sales_order.js:1605 #: templates/js/translated/sales_order.js:1692 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 -#: templates/js/translated/stock.js:2941 +#: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "" @@ -1425,8 +1429,8 @@ msgstr "" msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "" @@ -1451,10 +1455,10 @@ msgstr "" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1466,8 +1470,8 @@ msgstr "" #: templates/js/translated/sales_order.js:1627 #: templates/js/translated/sales_order.js:1706 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164 -#: templates/js/translated/stock.js:2835 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 msgid "Location" msgstr "" @@ -1493,16 +1497,16 @@ msgstr "" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 #: templates/js/translated/purchase_order.js:1723 #: templates/js/translated/return_order.js:331 #: templates/js/translated/sales_order.js:819 -#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959 -#: templates/js/translated/stock.js:3084 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 msgid "Status" msgstr "" @@ -1566,7 +1570,7 @@ msgstr "" msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "" @@ -1602,11 +1606,11 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1065 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" @@ -1619,7 +1623,7 @@ msgstr "" msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "" @@ -1659,44 +1663,45 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 #: stock/api.py:745 msgid "BOM Item" msgstr "" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1862,7 +1867,7 @@ msgstr "" #: templates/js/translated/pricing.js:929 #: templates/js/translated/sales_order.js:769 #: templates/js/translated/sales_order.js:992 -#: templates/js/translated/stock.js:2888 +#: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "" @@ -1920,8 +1925,8 @@ msgstr "" #: templates/js/translated/build.js:1377 #: templates/js/translated/model_renderers.js:235 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153 -#: templates/js/translated/stock.js:3091 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" @@ -1990,27 +1995,31 @@ msgstr "" msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:210 -msgid "Incomplete Build Outputs" -msgstr "" - -#: build/templates/build/detail.html:214 -msgid "Create new build output" +#: 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:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2026,15 +2035,15 @@ msgstr "" msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" msgstr "" @@ -2112,1390 +2121,1414 @@ msgstr "" msgid "User or group responsible for this project" msgstr "" -#: common/models.py:737 +#: common/models.py:744 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:741 +#: common/models.py:748 msgid "Settings value" msgstr "" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "" -#: common/models.py:1231 +#: common/models.py:1238 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1283 +#: common/models.py:1290 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "" -#: common/models.py:1298 +#: common/models.py:1305 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "" -#: common/models.py:1305 +#: common/models.py:1312 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "" -#: common/models.py:1332 +#: common/models.py:1339 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "" -#: common/models.py:1339 +#: common/models.py:1346 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "" -#: common/models.py:1346 +#: common/models.py:1353 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1352 +#: common/models.py:1359 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1360 +#: common/models.py:1367 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1369 +#: common/models.py:1376 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1378 +#: common/models.py:1385 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1386 +#: common/models.py:1393 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1399 +#: common/models.py:1406 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "" -#: common/models.py:1411 +#: common/models.py:1418 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1415 +#: common/models.py:1422 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1421 +#: common/models.py:1428 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1427 +#: common/models.py:1434 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1433 +#: common/models.py:1440 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1439 +#: common/models.py:1446 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1505 +#: common/models.py:1512 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1512 +#: common/models.py:1519 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "" -#: common/models.py:1525 +#: common/models.py:1532 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1526 +#: common/models.py:1533 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1530 +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1532 +#: common/models.py:1539 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1540 +#: common/models.py:1547 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1548 +#: common/models.py:1555 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1564 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1580 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1588 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1595 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1603 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1611 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1618 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1632 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1645 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: 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:202 msgid "Page Size" msgstr "" -#: common/models.py:1651 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1657 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1664 +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1671 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1677 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1692 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1704 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1711 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1719 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1725 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1731 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1736 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1741 +#: 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 "Build Order Reference Pattern" msgstr "" -#: common/models.py:1743 +#: common/models.py:1764 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1757 +#: common/models.py:1778 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1765 +#: common/models.py:1786 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1773 +#: common/models.py:1794 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1780 +#: common/models.py:1801 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1787 +#: common/models.py:1808 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1795 +#: common/models.py:1816 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1803 +#: common/models.py:1824 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1811 +#: common/models.py:1832 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "" -#: common/models.py:1825 +#: common/models.py:1846 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1838 +#: common/models.py:1859 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1844 +#: common/models.py:1865 msgid "Email required" msgstr "" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1852 +#: common/models.py:1873 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "" -#: common/models.py:1859 +#: common/models.py:1880 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "" -#: common/models.py:1865 +#: common/models.py:1886 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "" -#: common/models.py:1879 +#: common/models.py:1900 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1892 +#: common/models.py:1913 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1929 +#: common/models.py:1950 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "" -#: common/models.py:1936 +#: common/models.py:1957 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1950 +#: common/models.py:1971 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1958 +#: common/models.py:1979 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1966 +#: common/models.py:1987 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1974 +#: common/models.py:1995 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2029 common/models.py:2429 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2043 +#: common/models.py:2070 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2045 +#: common/models.py:2072 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2051 +#: common/models.py:2078 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2052 +#: common/models.py:2079 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2057 +#: common/models.py:2084 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2058 +#: common/models.py:2085 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2063 +#: common/models.py:2090 msgid "Show latest parts" msgstr "" -#: common/models.py:2064 +#: common/models.py:2091 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2069 +#: common/models.py:2096 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2070 +#: common/models.py:2097 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2075 +#: common/models.py:2102 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2076 +#: common/models.py:2103 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2081 +#: common/models.py:2108 msgid "Show low stock" msgstr "" -#: common/models.py:2082 +#: common/models.py:2109 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2087 +#: common/models.py:2114 msgid "Show depleted stock" msgstr "" -#: common/models.py:2088 +#: common/models.py:2115 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2093 +#: common/models.py:2120 msgid "Show needed stock" msgstr "" -#: common/models.py:2094 +#: common/models.py:2121 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2099 +#: common/models.py:2126 msgid "Show expired stock" msgstr "" -#: common/models.py:2100 +#: common/models.py:2127 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2105 +#: common/models.py:2132 msgid "Show stale stock" msgstr "" -#: common/models.py:2106 +#: common/models.py:2133 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2111 +#: common/models.py:2138 msgid "Show pending builds" msgstr "" -#: common/models.py:2112 +#: common/models.py:2139 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2117 +#: common/models.py:2144 msgid "Show overdue builds" msgstr "" -#: common/models.py:2118 +#: common/models.py:2145 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2123 +#: common/models.py:2150 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2124 +#: common/models.py:2151 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2129 +#: common/models.py:2156 msgid "Show overdue POs" msgstr "" -#: common/models.py:2130 +#: common/models.py:2157 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2135 +#: common/models.py:2162 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2136 +#: common/models.py:2163 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2141 +#: common/models.py:2168 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2142 +#: common/models.py:2169 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2147 +#: common/models.py:2174 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2148 +#: common/models.py:2175 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2153 +#: common/models.py:2180 msgid "Show News" msgstr "" -#: common/models.py:2154 +#: common/models.py:2181 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2159 +#: common/models.py:2186 msgid "Inline label display" msgstr "" -#: common/models.py:2161 +#: common/models.py:2188 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2167 +#: common/models.py:2194 msgid "Default label printer" msgstr "" -#: common/models.py:2169 +#: common/models.py:2196 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2175 +#: common/models.py:2202 msgid "Inline report display" msgstr "" -#: common/models.py:2177 +#: common/models.py:2204 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2183 +#: common/models.py:2210 msgid "Search Parts" msgstr "" -#: common/models.py:2184 +#: common/models.py:2211 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2189 +#: common/models.py:2216 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2190 +#: common/models.py:2217 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2195 +#: common/models.py:2222 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2196 +#: common/models.py:2223 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2201 +#: common/models.py:2228 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2202 +#: common/models.py:2229 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2207 +#: common/models.py:2234 msgid "Search Categories" msgstr "" -#: common/models.py:2208 +#: common/models.py:2235 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2213 +#: common/models.py:2240 msgid "Search Stock" msgstr "" -#: common/models.py:2214 +#: common/models.py:2241 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2219 +#: common/models.py:2246 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2221 +#: common/models.py:2248 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2227 +#: common/models.py:2254 msgid "Search Locations" msgstr "" -#: common/models.py:2228 +#: common/models.py:2255 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2233 +#: common/models.py:2260 msgid "Search Companies" msgstr "" -#: common/models.py:2234 +#: common/models.py:2261 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2239 +#: common/models.py:2266 msgid "Search Build Orders" msgstr "" -#: common/models.py:2240 +#: common/models.py:2267 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2245 +#: common/models.py:2272 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2246 +#: common/models.py:2273 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2251 +#: common/models.py:2278 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2253 +#: common/models.py:2280 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2259 +#: common/models.py:2286 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2260 +#: common/models.py:2287 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2265 +#: common/models.py:2292 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2267 +#: common/models.py:2294 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2273 +#: common/models.py:2300 msgid "Search Return Orders" msgstr "" -#: common/models.py:2274 +#: common/models.py:2301 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2279 +#: common/models.py:2306 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2281 +#: common/models.py:2308 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2287 +#: common/models.py:2314 msgid "Search Preview Results" msgstr "" -#: common/models.py:2289 +#: common/models.py:2316 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2295 +#: common/models.py:2322 msgid "Regex Search" msgstr "" -#: common/models.py:2296 +#: common/models.py:2323 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2301 +#: common/models.py:2328 msgid "Whole Word Search" msgstr "" -#: common/models.py:2302 +#: common/models.py:2329 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2307 +#: common/models.py:2334 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2308 +#: common/models.py:2335 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2313 +#: common/models.py:2340 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2314 +#: common/models.py:2341 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2319 +#: common/models.py:2346 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2320 +#: common/models.py:2347 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2325 +#: common/models.py:2352 msgid "Date Format" msgstr "" -#: common/models.py:2326 +#: common/models.py:2353 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2366 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2340 +#: common/models.py:2367 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2372 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2347 +#: common/models.py:2374 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2353 +#: common/models.py:2380 msgid "Table String Length" msgstr "" -#: common/models.py:2355 +#: common/models.py:2382 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2361 +#: common/models.py:2388 msgid "Default part label template" msgstr "" -#: common/models.py:2362 +#: common/models.py:2389 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2367 +#: common/models.py:2394 msgid "Default stock item template" msgstr "" -#: common/models.py:2369 +#: common/models.py:2396 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2375 +#: common/models.py:2402 msgid "Default stock location label template" msgstr "" -#: common/models.py:2377 +#: common/models.py:2404 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2383 +#: common/models.py:2410 msgid "Receive error reports" msgstr "" -#: common/models.py:2384 +#: common/models.py:2411 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2389 +#: common/models.py:2416 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2417 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2460 msgid "Price break quantity" msgstr "" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3503,23 +3536,23 @@ msgstr "" msgid "Price" msgstr "" -#: common/models.py:2441 +#: common/models.py:2468 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2639 common/models.py:2824 msgid "Endpoint" msgstr "" -#: common/models.py:2613 +#: common/models.py:2640 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2623 +#: common/models.py:2650 msgid "Name for this webhook" msgstr "" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3529,101 +3562,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2627 +#: common/models.py:2654 msgid "Is this webhook active" msgstr "" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2670 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2644 +#: common/models.py:2671 msgid "Token for access" msgstr "" -#: common/models.py:2652 +#: common/models.py:2679 msgid "Secret" msgstr "" -#: common/models.py:2653 +#: common/models.py:2680 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2761 +#: common/models.py:2788 msgid "Message ID" msgstr "" -#: common/models.py:2762 +#: common/models.py:2789 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2770 +#: common/models.py:2797 msgid "Host" msgstr "" -#: common/models.py:2771 +#: common/models.py:2798 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2779 +#: common/models.py:2806 msgid "Header" msgstr "" -#: common/models.py:2780 +#: common/models.py:2807 msgid "Header of this message" msgstr "" -#: common/models.py:2787 +#: common/models.py:2814 msgid "Body" msgstr "" -#: common/models.py:2788 +#: common/models.py:2815 msgid "Body of this message" msgstr "" -#: common/models.py:2798 +#: common/models.py:2825 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2803 +#: common/models.py:2830 msgid "Worked on" msgstr "" -#: common/models.py:2804 +#: common/models.py:2831 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2930 +#: common/models.py:2957 msgid "Id" msgstr "" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2959 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2963 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2965 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2967 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Read" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Was this news item read?" msgstr "" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2987 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3633,31 +3666,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2960 +#: common/models.py:2987 msgid "Image file" msgstr "" -#: common/models.py:3002 +#: common/models.py:3029 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3021 +#: common/models.py:3048 msgid "Unit name" msgstr "" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3029 +#: common/models.py:3056 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3037 +#: common/models.py:3064 msgid "Unit definition" msgstr "" @@ -3961,7 +3994,7 @@ msgid "Link to address information (external)" msgstr "" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" @@ -3972,7 +4005,7 @@ msgstr "" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3987,7 +4020,7 @@ msgid "Select manufacturer" msgstr "" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4022,9 +4055,9 @@ msgstr "" #: company/models.py:615 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2438 templates/js/translated/company.js:1156 +#: stock/models.py:2441 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1519 msgid "Value" msgstr "" @@ -4033,7 +4066,7 @@ msgid "Parameter value" msgstr "" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4059,7 +4092,7 @@ msgstr "" #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4076,7 +4109,7 @@ msgstr "" msgid "Select supplier" msgstr "" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "" @@ -4093,13 +4126,13 @@ msgid "Supplier part description" msgstr "" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:579 msgid "Note" msgstr "" @@ -4112,10 +4145,10 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 -#: templates/js/translated/stock.js:2387 +#: templates/js/translated/stock.js:2423 msgid "Packaging" msgstr "" @@ -4157,7 +4190,7 @@ msgstr "" msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "" @@ -4218,13 +4251,13 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1100 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 #: templates/js/translated/return_order.js:296 #: templates/js/translated/sales_order.js:784 -#: templates/js/translated/stock.js:2923 +#: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:804 msgid "Customer" msgstr "" @@ -4429,8 +4462,9 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "" @@ -4482,7 +4516,7 @@ msgstr "" #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2243 +#: templates/js/translated/stock.js:2279 msgid "Supplier Part" msgstr "" @@ -4528,7 +4562,7 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4577,15 +4611,17 @@ msgstr "" msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 -#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:193 msgid "Stock Items" msgstr "" @@ -4639,8 +4675,8 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" @@ -4665,7 +4701,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "" @@ -4679,8 +4715,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "" @@ -4821,7 +4857,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1674 -#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "" @@ -4830,7 +4866,7 @@ msgstr "" #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 -#: templates/js/translated/stock.js:2905 +#: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "" @@ -4838,11 +4874,11 @@ msgstr "" msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -5029,9 +5065,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2274 +#: templates/js/translated/stock.js:2310 msgid "Purchase Price" msgstr "" @@ -5084,8 +5120,8 @@ msgstr "" msgid "User who checked this shipment" msgstr "" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "" @@ -5133,7 +5169,7 @@ msgstr "" msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "" @@ -5207,159 +5243,159 @@ msgstr "" msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:610 +#: order/serializers.py:632 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1677 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "" @@ -5733,7 +5769,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" @@ -5763,12 +5799,12 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5780,12 +5816,12 @@ msgstr "" #: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 -#: templates/js/translated/stock.js:1999 +#: templates/js/translated/stock.js:2035 msgid "IPN" msgstr "" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" @@ -5861,10 +5897,10 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -5885,17 +5921,17 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3897 msgid "Part IPN" msgstr "" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5973,8 +6009,8 @@ msgstr "" msgid "This option must be selected" msgstr "" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5982,12 +6018,17 @@ msgstr "" msgid "Category" msgstr "" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5995,7 +6036,7 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -6010,7 +6051,8 @@ msgstr "" msgid "Default location for parts in this category" msgstr "" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 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" @@ -6076,7 +6118,7 @@ msgstr "" msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3896 msgid "Part name" msgstr "" @@ -6358,7 +6400,7 @@ msgstr "" #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1732 -#: templates/js/translated/stock.js:2785 +#: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" @@ -6410,586 +6452,602 @@ msgstr "" msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3448 -msgid "Test with this name already exists for this part" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "" -#: part/models.py:3496 +#: part/models.py:3505 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "" -#: part/models.py:3503 +#: part/models.py:3512 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3847 +#: part/models.py:3856 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3885 +#: part/models.py:3894 msgid "Part ID or part name" msgstr "" -#: part/models.py:3886 +#: part/models.py:3895 msgid "Unique part ID value" msgstr "" -#: part/models.py:3888 +#: part/models.py:3897 msgid "Part IPN value" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "Level" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "BOM level" msgstr "" -#: part/models.py:3979 +#: part/models.py:3988 msgid "Select parent part" msgstr "" -#: part/models.py:3989 +#: part/models.py:3998 msgid "Sub part" msgstr "" -#: part/models.py:3990 +#: part/models.py:3999 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4001 +#: part/models.py:4010 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4007 +#: part/models.py:4016 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4013 +#: part/models.py:4022 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4029 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4021 +#: part/models.py:4030 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4028 +#: part/models.py:4037 msgid "BOM item reference" msgstr "" -#: part/models.py:4036 +#: part/models.py:4045 msgid "BOM item notes" msgstr "" -#: part/models.py:4042 +#: part/models.py:4051 msgid "Checksum" msgstr "" -#: part/models.py:4043 +#: part/models.py:4052 msgid "BOM line checksum" msgstr "" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4057 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4049 +#: part/models.py:4058 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4063 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:4055 +#: part/models.py:4064 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4069 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4061 +#: part/models.py:4070 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4146 stock/models.py:649 +#: part/models.py:4155 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4165 part/models.py:4167 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4298 +#: part/models.py:4307 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4319 +#: part/models.py:4328 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4332 +#: part/models.py:4341 msgid "Parent BOM item" msgstr "" -#: part/models.py:4340 +#: part/models.py:4349 msgid "Substitute part" msgstr "" -#: part/models.py:4356 +#: part/models.py:4365 msgid "Part 1" msgstr "" -#: part/models.py:4364 +#: part/models.py:4373 msgid "Part 2" msgstr "" -#: part/models.py:4365 +#: part/models.py:4374 msgid "Select Related Part" msgstr "" -#: part/models.py:4384 +#: part/models.py:4393 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4389 +#: part/models.py:4398 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:432 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:480 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1104 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1078 +#: part/serializers.py:1114 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1088 +#: part/serializers.py:1124 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1647 +#: part/serializers.py:1693 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1659 +#: part/serializers.py:1705 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1694 +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "" @@ -7147,7 +7205,7 @@ msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/stock.js:2179 users/models.py:191 +#: templates/js/translated/stock.js:2215 users/models.py:191 msgid "Stocktake" msgstr "" @@ -7221,7 +7279,7 @@ msgid "Validate BOM" msgstr "" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "" @@ -7405,7 +7463,7 @@ msgstr "" msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "" @@ -7509,7 +7567,7 @@ msgstr "" #: templates/InvenTree/settings/sidebar.html:51 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 -#: templates/js/translated/stock.js:2033 templates/navbar.html:31 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7555,7 +7613,7 @@ msgstr "" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 -#: templates/js/translated/stock.js:2209 +#: templates/js/translated/stock.js:2245 msgid "Last Updated" msgstr "" @@ -7999,7 +8057,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "" @@ -8307,16 +8365,16 @@ msgstr "" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "" @@ -8336,103 +8394,111 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" msgstr "" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" msgstr "" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8499,12 +8565,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1492 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Result" msgstr "" @@ -8531,7 +8597,7 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:168 #: stock/admin.py:162 templates/js/translated/stock.js:700 -#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110 msgid "Serial" msgstr "" @@ -8615,7 +8681,7 @@ msgstr "" #: stock/admin.py:256 stock/models.py:886 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2193 users/models.py:113 +#: templates/js/translated/stock.js:2229 users/models.py:113 msgid "Expiry Date" msgstr "" @@ -8713,7 +8779,7 @@ msgstr "" msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:174 templates/js/translated/stock.js:2745 +#: stock/models.py:174 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" @@ -8722,7 +8788,7 @@ msgstr "" msgid "This is an external stock location" msgstr "" -#: stock/models.py:181 templates/js/translated/stock.js:2754 +#: stock/models.py:181 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" @@ -8739,7 +8805,7 @@ msgstr "" msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:290 msgid "Stock item cannot be created for virtual parts" msgstr "" @@ -8784,7 +8850,7 @@ msgstr "" msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1351 msgid "Packaging this stock item is stored in" msgstr "" @@ -8796,7 +8862,7 @@ msgstr "" msgid "Serial number for this item" msgstr "" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1334 msgid "Batch code for this stock item" msgstr "" @@ -8873,7 +8939,7 @@ msgstr "" msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:529 msgid "Serial numbers already exist" msgstr "" @@ -8905,7 +8971,7 @@ msgstr "" msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1240 msgid "Duplicate stock items" msgstr "" @@ -8929,207 +8995,236 @@ msgstr "" msgid "Entry notes" msgstr "" -#: stock/models.py:2399 +#: stock/models.py:2402 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2405 +#: stock/models.py:2408 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Test result" msgstr "" -#: stock/models.py:2439 +#: stock/models.py:2442 msgid "Test output value" msgstr "" -#: stock/models.py:2447 +#: stock/models.py:2450 msgid "Test result attachment" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2454 msgid "Test notes" msgstr "" -#: stock/serializers.py:96 +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "" + +#: stock/models.py:2463 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2469 +msgid "Started" +msgstr "" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:100 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:119 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 +#: stock/serializers.py:151 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:184 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:267 +#: stock/serializers.py:282 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:380 +#: stock/serializers.py:402 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:442 +#: stock/serializers.py:464 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:455 +#: stock/serializers.py:477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:462 +#: stock/serializers.py:484 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:480 +#: stock/serializers.py:502 msgid "Optional note field" msgstr "" -#: stock/serializers.py:490 +#: stock/serializers.py:512 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:545 +#: stock/serializers.py:567 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:574 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:553 +#: stock/serializers.py:575 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:566 +#: stock/serializers.py:588 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:596 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:581 +#: stock/serializers.py:607 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:620 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:628 +#: stock/serializers.py:655 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:663 +#: stock/serializers.py:690 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:676 +#: stock/serializers.py:703 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:693 +#: stock/serializers.py:720 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:724 +#: stock/serializers.py:751 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:761 +#: stock/serializers.py:788 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:767 +#: stock/serializers.py:794 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1036 +#: stock/serializers.py:1069 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1040 +#: stock/serializers.py:1073 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1044 +#: stock/serializers.py:1077 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1068 +#: stock/serializers.py:1101 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1074 +#: stock/serializers.py:1107 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1082 +#: stock/serializers.py:1115 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1125 stock/serializers.py:1379 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1171 +#: stock/serializers.py:1204 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1176 +#: stock/serializers.py:1209 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1177 +#: stock/serializers.py:1210 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1182 +#: stock/serializers.py:1215 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1183 +#: stock/serializers.py:1216 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1193 +#: stock/serializers.py:1226 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1260 +#: stock/serializers.py:1293 msgid "No Change" msgstr "" -#: stock/serializers.py:1289 +#: stock/serializers.py:1322 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1308 +#: stock/serializers.py:1341 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1336 +#: stock/serializers.py:1369 msgid "Stock transaction notes" msgstr "" @@ -9154,7 +9249,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 msgid "Delete Test Data" msgstr "" @@ -9170,15 +9265,15 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:274 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 msgid "Add Test Result" msgstr "" @@ -9201,17 +9296,17 @@ msgid "Stock adjustment actions" msgstr "" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 msgid "Count stock" msgstr "" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:1803 msgid "Add stock" msgstr "" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1776 +#: templates/js/translated/stock.js:1812 msgid "Remove stock" msgstr "" @@ -9220,12 +9315,12 @@ msgid "Serialize stock" msgstr "" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 msgid "Transfer stock" msgstr "" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1884 msgid "Assign to customer" msgstr "" @@ -9364,7 +9459,7 @@ msgid "No stocktake performed" msgstr "" #: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1915 +#: templates/js/translated/stock.js:1951 msgid "stock item" msgstr "" @@ -9469,7 +9564,7 @@ msgid "New Location" msgstr "" #: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2536 +#: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" @@ -10063,7 +10158,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:37 msgid "New Location Type" msgstr "" @@ -10120,7 +10215,7 @@ msgstr "" msgid "Stock Settings" msgstr "" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:33 msgid "Stock Location Types" msgstr "" @@ -10662,7 +10757,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "" @@ -10676,7 +10771,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "" @@ -11051,62 +11146,66 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "" @@ -11389,7 +11488,7 @@ msgstr "" #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 -#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11401,7 +11500,7 @@ msgstr "" msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006 +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" @@ -11449,29 +11548,29 @@ msgstr "" msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "" @@ -11804,15 +11903,15 @@ msgstr "" msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3087 +#: templates/js/translated/forms.js:3103 msgid "Select Columns" msgstr "" @@ -12289,7 +12388,7 @@ msgid "No category" msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 -#: templates/js/translated/stock.js:2633 +#: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" @@ -12301,7 +12400,7 @@ msgstr "" msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" @@ -12313,64 +12412,64 @@ msgstr "" msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" @@ -12907,7 +13006,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1737 +#: templates/js/translated/stock.js:1773 msgid "Shipped to customer" msgstr "" @@ -13165,7 +13264,7 @@ msgstr "" msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" @@ -13189,248 +13288,256 @@ msgstr "" msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1440 +#: templates/js/translated/stock.js:1447 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1443 +#: templates/js/translated/stock.js:1450 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1466 +#: templates/js/translated/stock.js:1473 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1530 +#: templates/js/translated/stock.js:1537 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1677 +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1733 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1729 +#: templates/js/translated/stock.js:1765 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1769 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1741 +#: templates/js/translated/stock.js:1777 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1747 +#: templates/js/translated/stock.js:1783 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1839 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1848 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:1897 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1916 +#: templates/js/translated/stock.js:1952 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1921 +#: templates/js/translated/stock.js:1957 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1932 +#: templates/js/translated/stock.js:1968 msgid "Stock Actions" msgstr "" -#: templates/js/translated/stock.js:1976 +#: templates/js/translated/stock.js:2012 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2054 +#: templates/js/translated/stock.js:2090 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2059 +#: templates/js/translated/stock.js:2095 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2062 +#: templates/js/translated/stock.js:2098 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2065 +#: templates/js/translated/stock.js:2101 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2067 +#: templates/js/translated/stock.js:2103 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2069 +#: templates/js/translated/stock.js:2105 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2072 +#: templates/js/translated/stock.js:2108 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2074 +#: templates/js/translated/stock.js:2110 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2114 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2080 +#: templates/js/translated/stock.js:2116 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2085 +#: templates/js/translated/stock.js:2121 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2087 +#: templates/js/translated/stock.js:2123 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2089 +#: templates/js/translated/stock.js:2125 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2129 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2258 +#: templates/js/translated/stock.js:2294 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2305 +#: templates/js/translated/stock.js:2341 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2433 +#: templates/js/translated/stock.js:2469 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2573 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2692 +#: templates/js/translated/stock.js:2728 msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2810 +#: templates/js/translated/stock.js:2846 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2814 +#: templates/js/translated/stock.js:2850 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:2862 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2848 +#: templates/js/translated/stock.js:2884 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2865 +#: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2880 +#: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2897 +#: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2914 +#: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3005 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2977 +#: templates/js/translated/stock.js:3013 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:3049 +#: templates/js/translated/stock.js:3085 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139 +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:3161 +#: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:3182 +#: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:3183 +#: 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:3185 +#: 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:3186 +#: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:3187 +#: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:3188 +#: 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:3201 +#: templates/js/translated/stock.js:3237 msgid "Select part to install" msgstr "" -#: templates/js/translated/stock.js:3264 +#: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" msgstr "" -#: templates/js/translated/stock.js:3277 +#: templates/js/translated/stock.js:3313 msgid "Selected stock items" msgstr "" -#: templates/js/translated/stock.js:3281 +#: templates/js/translated/stock.js:3317 msgid "Change Stock Status" msgstr "" diff --git a/InvenTree/locale/sv/LC_MESSAGES/django.po b/InvenTree/locale/sv/LC_MESSAGES/django.po index c82eea9991..0853578ece 100644 --- a/InvenTree/locale/sv/LC_MESSAGES/django.po +++ b/InvenTree/locale/sv/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 04:05+0000\n" -"PO-Revision-Date: 2024-02-28 07:23\n" +"POT-Creation-Date: 2024-03-22 10:34+0000\n" +"PO-Revision-Date: 2024-03-22 14:07\n" "Last-Translator: \n" "Language-Team: Swedish\n" "Language: sv_SE\n" @@ -30,20 +30,20 @@ msgstr "Användaren har inte behörighet att se denna modell" msgid "Invalid unit provided ({unit})" msgstr "" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "Inget värde angivet" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "Kunde inte konvertera {original} till {unit}" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" msgstr "Ogiltigt antal angivet" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" msgstr "Ogiltigt antal angivet ({exc})" @@ -64,18 +64,18 @@ msgstr "Ange datum" #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 #: templates/js/translated/return_order.js:776 #: templates/js/translated/sales_order.js:1067 #: templates/js/translated/sales_order.js:1982 -#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 msgid "Notes" msgstr "Anteckningar" @@ -132,42 +132,42 @@ msgstr "Den angivna e-postdomänen är inte godkänd." msgid "Registration is disabled." msgstr "Registrering är stängd." -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "Ogiltigt antal angivet" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "Tom serienummersträng" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "Serienummret finns redan" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "Inga serienummer hittades" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "Ta bort HTML-taggar från detta värde" @@ -203,131 +203,135 @@ msgstr "Fjärrservern returnerade tomt svar" msgid "Supplied URL is not a valid image file" msgstr "Angiven URL är inte en giltig bildfil" -#: InvenTree/locales.py:16 +#: InvenTree/locales.py:18 msgid "Bulgarian" msgstr "Bulgariska" -#: InvenTree/locales.py:17 +#: InvenTree/locales.py:19 msgid "Czech" msgstr "Tjeckiska" -#: InvenTree/locales.py:18 +#: InvenTree/locales.py:20 msgid "Danish" msgstr "Danska" -#: InvenTree/locales.py:19 +#: InvenTree/locales.py:21 msgid "German" msgstr "Tyska" -#: InvenTree/locales.py:20 +#: InvenTree/locales.py:22 msgid "Greek" msgstr "Grekiska" -#: InvenTree/locales.py:21 +#: InvenTree/locales.py:23 msgid "English" msgstr "Engelska" -#: InvenTree/locales.py:22 +#: InvenTree/locales.py:24 msgid "Spanish" msgstr "Spanska" -#: InvenTree/locales.py:23 +#: InvenTree/locales.py:25 msgid "Spanish (Mexican)" msgstr "Spanska (Mexikanska)" -#: InvenTree/locales.py:24 +#: InvenTree/locales.py:26 msgid "Farsi / Persian" msgstr "Farsi / Persiska" -#: InvenTree/locales.py:25 +#: InvenTree/locales.py:27 msgid "Finnish" msgstr "Finska" -#: InvenTree/locales.py:26 +#: InvenTree/locales.py:28 msgid "French" msgstr "Franska" -#: InvenTree/locales.py:27 +#: InvenTree/locales.py:29 msgid "Hebrew" msgstr "Hebreiska" -#: InvenTree/locales.py:28 +#: InvenTree/locales.py:30 msgid "Hindi" msgstr "Hindi" -#: InvenTree/locales.py:29 +#: InvenTree/locales.py:31 msgid "Hungarian" msgstr "Ungerska" -#: InvenTree/locales.py:30 +#: InvenTree/locales.py:32 msgid "Italian" msgstr "Italienska" -#: InvenTree/locales.py:31 +#: InvenTree/locales.py:33 msgid "Japanese" msgstr "Japanska" -#: InvenTree/locales.py:32 +#: InvenTree/locales.py:34 msgid "Korean" msgstr "Koreanska" -#: InvenTree/locales.py:33 +#: InvenTree/locales.py:35 +msgid "Latvian" +msgstr "Lettiska" + +#: InvenTree/locales.py:36 msgid "Dutch" msgstr "Nederländska" -#: InvenTree/locales.py:34 +#: InvenTree/locales.py:37 msgid "Norwegian" msgstr "Norska" -#: InvenTree/locales.py:35 +#: InvenTree/locales.py:38 msgid "Polish" msgstr "Polska" -#: InvenTree/locales.py:36 +#: InvenTree/locales.py:39 msgid "Portuguese" msgstr "Portugisiska" -#: InvenTree/locales.py:37 +#: InvenTree/locales.py:40 msgid "Portuguese (Brazilian)" msgstr "Portugisiska (brasiliansk)" -#: InvenTree/locales.py:38 +#: InvenTree/locales.py:41 msgid "Russian" msgstr "Ryska" -#: InvenTree/locales.py:39 +#: InvenTree/locales.py:42 msgid "Slovak" msgstr "Slovakiska" -#: InvenTree/locales.py:40 +#: InvenTree/locales.py:43 msgid "Slovenian" msgstr "Slovenska" -#: InvenTree/locales.py:41 +#: InvenTree/locales.py:44 msgid "Serbian" msgstr "Serbiska" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:45 msgid "Swedish" msgstr "Svenska" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:46 msgid "Thai" msgstr "Thailändska" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:47 msgid "Turkish" msgstr "Turkiska" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:48 msgid "Vietnamese" msgstr "Vietnamesiska" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:49 msgid "Chinese (Simplified)" msgstr "Kinesiska (Förenklad)" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:50 msgid "Chinese (Traditional)" msgstr "Kinesiska (Traditionell)" @@ -391,7 +395,7 @@ msgstr "Saknad fil" msgid "Missing external link" msgstr "Extern länk saknas" -#: InvenTree/models.py:559 stock/models.py:2446 +#: InvenTree/models.py:559 stock/models.py:2449 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -401,7 +405,7 @@ msgstr "Bilaga" msgid "Select file to attach" msgstr "Välj fil att bifoga" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -432,13 +436,13 @@ msgstr "Kommentar" msgid "File comment" msgstr "Fil kommentar" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:3000 users/models.py:100 +#: templates/js/translated/stock.js:3036 users/models.py:100 msgid "User" msgstr "Användare" @@ -479,10 +483,10 @@ msgstr "" msgid "Invalid choice" msgstr "Ogiltigt val" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -495,7 +499,7 @@ msgstr "Ogiltigt val" #: templates/js/translated/company.js:1155 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Namn" @@ -506,10 +510,10 @@ msgstr "Namn" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -523,7 +527,7 @@ msgstr "Namn" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -531,8 +535,8 @@ msgstr "Namn" #: templates/js/translated/return_order.js:314 #: templates/js/translated/sales_order.js:802 #: templates/js/translated/sales_order.js:1812 -#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021 -#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "Beskrivning" @@ -545,7 +549,7 @@ msgid "parent" msgstr "överordnad" #: InvenTree/models.py:916 templates/js/translated/part.js:2794 -#: templates/js/translated/stock.js:2721 +#: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Sökväg" @@ -581,7 +585,7 @@ msgstr "Serverfel" msgid "An error has been logged by the server." msgstr "Ett fel har loggats av servern." -#: InvenTree/serializers.py:62 part/models.py:4134 +#: InvenTree/serializers.py:62 part/models.py:4165 msgid "Must be a valid number" msgstr "Måste vara ett giltigt nummer" @@ -596,89 +600,89 @@ msgstr "Valuta" msgid "Select currency from available options" msgstr "Välj valuta från tillgängliga alternativ" -#: InvenTree/serializers.py:436 +#: InvenTree/serializers.py:441 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:448 +#: InvenTree/serializers.py:453 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:467 +#: InvenTree/serializers.py:472 msgid "Your account has been created." msgstr "Ditt konto har skapats." -#: InvenTree/serializers.py:469 +#: InvenTree/serializers.py:474 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:476 +#: InvenTree/serializers.py:481 msgid "Welcome to InvenTree" msgstr "Välkommen till InvenTree" -#: InvenTree/serializers.py:537 +#: InvenTree/serializers.py:542 msgid "Filename" msgstr "Filnamn" -#: InvenTree/serializers.py:571 +#: InvenTree/serializers.py:576 msgid "Invalid value" msgstr "Ogiltigt värde" -#: InvenTree/serializers.py:591 +#: InvenTree/serializers.py:596 msgid "Data File" msgstr "Datafil" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:597 msgid "Select data file for upload" msgstr "Välj fil för uppladdning" -#: InvenTree/serializers.py:609 +#: InvenTree/serializers.py:614 msgid "Unsupported file type" msgstr "Filtypen stöds inte" -#: InvenTree/serializers.py:615 +#: InvenTree/serializers.py:620 msgid "File is too large" msgstr "Filen är för stor" -#: InvenTree/serializers.py:636 +#: InvenTree/serializers.py:641 msgid "No columns found in file" msgstr "Inga kolumner hittades i filen" -#: InvenTree/serializers.py:639 +#: InvenTree/serializers.py:644 msgid "No data rows found in file" msgstr "Inga rader hittades i filen" -#: InvenTree/serializers.py:752 +#: InvenTree/serializers.py:757 msgid "No data rows provided" msgstr "Inga rader angivna" -#: InvenTree/serializers.py:755 +#: InvenTree/serializers.py:760 msgid "No data columns supplied" msgstr "Inga datakolumner har angetts" -#: InvenTree/serializers.py:822 +#: InvenTree/serializers.py:827 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Saknar obligatorisk kolumn: '{name}'" -#: InvenTree/serializers.py:831 +#: InvenTree/serializers.py:836 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Duplicerad kolumn: '{col}'" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:859 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:855 +#: InvenTree/serializers.py:860 msgid "URL of remote image file" msgstr "URL för fjärrbildsfil" -#: InvenTree/serializers.py:873 +#: InvenTree/serializers.py:878 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:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "Kontroll av bakgrundsarbetare misslyckades" @@ -818,7 +822,7 @@ msgstr "Dela från överordnat objekt" msgid "Split child item" msgstr "Dela underordnat objekt" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 msgid "Merged stock items" msgstr "Sammanfogade lagerposter" @@ -838,7 +842,7 @@ msgstr "Bygg orderutgång slutförd" msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 msgid "Consumed by build order" msgstr "Konsumeras av byggorder" @@ -938,14 +942,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:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4043 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4037 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -960,7 +964,7 @@ msgid "Tracked" msgstr "" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -985,7 +989,7 @@ msgstr "" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "Byggorder" @@ -1014,7 +1018,7 @@ msgstr "Byggorderreferens" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4058 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1044,11 +1048,11 @@ msgstr "Byggorder till vilken detta bygge är tilldelad" #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3916 part/models.py:4009 +#: part/models.py:4370 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1059,7 +1063,7 @@ msgstr "Byggorder till vilken detta bygge är tilldelad" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:267 stock/serializers.py:689 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1086,9 +1090,9 @@ msgstr "Byggorder till vilken detta bygge är tilldelad" #: templates/js/translated/sales_order.js:1598 #: templates/js/translated/sales_order.js:1796 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960 -#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054 -#: templates/js/translated/stock.js:3200 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 msgid "Part" msgstr "Del" @@ -1146,8 +1150,8 @@ msgstr "Byggstatus" msgid "Build status code" msgstr "Bygg statuskod" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Batchkod" @@ -1242,53 +1246,53 @@ msgstr "Projektkod" msgid "Project code for this build order" msgstr "" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" msgstr "Byggorder {build} har slutförts" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "En byggorder har slutförts" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "Ingen byggutgång angiven" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "Byggutgång är redan slutförd" -#: build/models.py:789 +#: build/models.py:805 msgid "Build output does not match Build Order" msgstr "Byggutgång matchar inte bygg order" -#: build/models.py:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" msgstr "" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4031 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1298,7 +1302,7 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:463 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1310,7 +1314,7 @@ msgstr "" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1325,43 +1329,43 @@ msgstr "" #: templates/js/translated/sales_order.js:1698 #: templates/js/translated/sales_order.js:1824 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 -#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985 -#: templates/js/translated/stock.js:3068 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "Antal" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1381 +#: build/models.py:1397 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:1390 +#: build/models.py:1406 #, 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:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "Lagerposten är överallokerad" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "Allokeringsmängden måste vara större än noll" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "Antal måste vara 1 för serialiserat lager" -#: build/models.py:1473 +#: build/models.py:1489 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 @@ -1372,23 +1376,23 @@ msgstr "" #: templates/js/translated/sales_order.js:1605 #: templates/js/translated/sales_order.js:1692 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 -#: templates/js/translated/stock.js:2941 +#: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "Artikel i lager" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "Källa lagervara" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "Lagersaldo att allokera för att bygga" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "Installera till" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "Destination lagervara" @@ -1425,8 +1429,8 @@ msgstr "" msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "Serienummer" @@ -1451,10 +1455,10 @@ msgstr "" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1466,8 +1470,8 @@ msgstr "" #: templates/js/translated/sales_order.js:1627 #: templates/js/translated/sales_order.js:1706 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164 -#: templates/js/translated/stock.js:2835 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 msgid "Location" msgstr "Plats" @@ -1493,16 +1497,16 @@ msgstr "" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 #: templates/js/translated/purchase_order.js:1723 #: templates/js/translated/return_order.js:331 #: templates/js/translated/sales_order.js:819 -#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959 -#: templates/js/translated/stock.js:3084 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 msgid "Status" msgstr "Status" @@ -1566,7 +1570,7 @@ msgstr "" msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "Acceptera ofullständig" @@ -1602,11 +1606,11 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1065 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" @@ -1619,7 +1623,7 @@ msgstr "" msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "" @@ -1659,44 +1663,45 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3926 part/models.py:4362 #: stock/api.py:745 msgid "BOM Item" msgstr "" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1862,7 +1867,7 @@ msgstr "" #: templates/js/translated/pricing.js:929 #: templates/js/translated/sales_order.js:769 #: templates/js/translated/sales_order.js:992 -#: templates/js/translated/stock.js:2888 +#: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "Försäljningsorder" @@ -1920,8 +1925,8 @@ msgstr "" #: templates/js/translated/build.js:1377 #: templates/js/translated/model_renderers.js:235 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153 -#: templates/js/translated/stock.js:3091 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" @@ -1990,27 +1995,31 @@ msgstr "Beställ obligatoriska delar" msgid "Order Parts" msgstr "Beställ delar" -#: build/templates/build/detail.html:210 -msgid "Incomplete Build Outputs" -msgstr "" - -#: build/templates/build/detail.html:214 -msgid "Create new build output" +#: 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:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2026,15 +2035,15 @@ msgstr "" msgid "Attachments" msgstr "Bilagor" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "Bygganteckningar" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" msgstr "" @@ -2112,1390 +2121,1414 @@ msgstr "Projektbeskrivning" msgid "User or group responsible for this project" msgstr "" -#: common/models.py:737 +#: common/models.py:744 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:741 +#: common/models.py:748 msgid "Settings value" msgstr "" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "Ingen grupp" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "Omstart krävs" -#: common/models.py:1231 +#: common/models.py:1238 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "Serverinstans (Namn)" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "Företagsnamn" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "Internt företagsnamn" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "Bas-URL" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "Bas-URL för serverinstans" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "Standardvaluta" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1283 +#: common/models.py:1290 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "dagar" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "Ladda ned från URL" -#: common/models.py:1298 +#: common/models.py:1305 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:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "" -#: common/models.py:1305 +#: common/models.py:1312 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "Kräv bekräftelse" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "Kräv uttrycklig användarbekräftelse för vissa åtgärder." -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "" -#: common/models.py:1332 +#: common/models.py:1339 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "" -#: common/models.py:1339 +#: common/models.py:1346 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "" -#: common/models.py:1346 +#: common/models.py:1353 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1352 +#: common/models.py:1359 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1360 +#: common/models.py:1367 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1369 +#: common/models.py:1376 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1378 +#: common/models.py:1385 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Stöd för streckkoder" -#: common/models.py:1386 +#: common/models.py:1393 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1399 +#: common/models.py:1406 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "" -#: common/models.py:1411 +#: common/models.py:1418 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1415 +#: common/models.py:1422 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1421 +#: common/models.py:1428 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1427 +#: common/models.py:1434 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1433 +#: common/models.py:1440 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1439 +#: common/models.py:1446 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "Mall" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "Delar är virtuella som standard" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "Visa import i vyer" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Display the import wizard in some part views" msgstr "Visa importguiden i vissa delvyer" -#: common/models.py:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "Visa relaterade delar" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" msgstr "Visa relaterade delar för en del" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1505 +#: common/models.py:1512 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1512 +#: common/models.py:1519 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "Visningsformat för delnamn" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "Formatera för att visa artikelnamnet" -#: common/models.py:1525 +#: common/models.py:1532 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1526 +#: common/models.py:1533 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1530 +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1532 +#: common/models.py:1539 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1540 +#: common/models.py:1547 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1548 +#: common/models.py:1555 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1564 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1580 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1588 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1595 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1603 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "Interna priser" -#: common/models.py:1611 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1618 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "Aktivera etikettutskrift" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "Aktivera etikettutskrift från webbgränssnittet" -#: common/models.py:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "Etikettbild DPI" -#: common/models.py:1632 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "Aktivera rapporter" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "Aktivera generering av rapporter" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "Debugläge" -#: common/models.py:1645 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: 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:202 msgid "Page Size" msgstr "Sidstorlek" -#: common/models.py:1651 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "Standard sidstorlek för PDF-rapporter" -#: common/models.py:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "Aktivera testrapporter" -#: common/models.py:1657 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1664 +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1671 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1677 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1692 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1704 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1711 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1719 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1725 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1731 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1736 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1741 +#: 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 "Build Order Reference Pattern" msgstr "" -#: common/models.py:1743 +#: common/models.py:1764 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1757 +#: common/models.py:1778 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1765 +#: common/models.py:1786 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1773 +#: common/models.py:1794 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1780 +#: common/models.py:1801 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1787 +#: common/models.py:1808 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1795 +#: common/models.py:1816 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1803 +#: common/models.py:1824 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1811 +#: common/models.py:1832 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "" -#: common/models.py:1825 +#: common/models.py:1846 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1838 +#: common/models.py:1859 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1844 +#: common/models.py:1865 msgid "Email required" msgstr "" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1852 +#: common/models.py:1873 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "" -#: common/models.py:1859 +#: common/models.py:1880 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "" -#: common/models.py:1865 +#: common/models.py:1886 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "Tillåtna domäner" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "" -#: common/models.py:1879 +#: common/models.py:1900 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1892 +#: common/models.py:1913 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1929 +#: common/models.py:1950 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "" -#: common/models.py:1936 +#: common/models.py:1957 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "Aktivera projektkoder" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1950 +#: common/models.py:1971 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1958 +#: common/models.py:1979 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1966 +#: common/models.py:1987 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1974 +#: common/models.py:1995 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2029 common/models.py:2429 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2043 +#: common/models.py:2070 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2045 +#: common/models.py:2072 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2051 +#: common/models.py:2078 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2052 +#: common/models.py:2079 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2057 +#: common/models.py:2084 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2058 +#: common/models.py:2085 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2063 +#: common/models.py:2090 msgid "Show latest parts" msgstr "" -#: common/models.py:2064 +#: common/models.py:2091 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2069 +#: common/models.py:2096 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2070 +#: common/models.py:2097 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2075 +#: common/models.py:2102 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2076 +#: common/models.py:2103 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2081 +#: common/models.py:2108 msgid "Show low stock" msgstr "" -#: common/models.py:2082 +#: common/models.py:2109 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2087 +#: common/models.py:2114 msgid "Show depleted stock" msgstr "" -#: common/models.py:2088 +#: common/models.py:2115 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2093 +#: common/models.py:2120 msgid "Show needed stock" msgstr "" -#: common/models.py:2094 +#: common/models.py:2121 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2099 +#: common/models.py:2126 msgid "Show expired stock" msgstr "" -#: common/models.py:2100 +#: common/models.py:2127 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2105 +#: common/models.py:2132 msgid "Show stale stock" msgstr "" -#: common/models.py:2106 +#: common/models.py:2133 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2111 +#: common/models.py:2138 msgid "Show pending builds" msgstr "" -#: common/models.py:2112 +#: common/models.py:2139 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2117 +#: common/models.py:2144 msgid "Show overdue builds" msgstr "" -#: common/models.py:2118 +#: common/models.py:2145 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2123 +#: common/models.py:2150 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2124 +#: common/models.py:2151 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2129 +#: common/models.py:2156 msgid "Show overdue POs" msgstr "" -#: common/models.py:2130 +#: common/models.py:2157 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2135 +#: common/models.py:2162 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2136 +#: common/models.py:2163 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2141 +#: common/models.py:2168 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2142 +#: common/models.py:2169 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2147 +#: common/models.py:2174 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2148 +#: common/models.py:2175 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2153 +#: common/models.py:2180 msgid "Show News" msgstr "" -#: common/models.py:2154 +#: common/models.py:2181 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2159 +#: common/models.py:2186 msgid "Inline label display" msgstr "" -#: common/models.py:2161 +#: common/models.py:2188 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2167 +#: common/models.py:2194 msgid "Default label printer" msgstr "" -#: common/models.py:2169 +#: common/models.py:2196 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2175 +#: common/models.py:2202 msgid "Inline report display" msgstr "" -#: common/models.py:2177 +#: common/models.py:2204 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2183 +#: common/models.py:2210 msgid "Search Parts" msgstr "Sök efter artiklar" -#: common/models.py:2184 +#: common/models.py:2211 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2189 +#: common/models.py:2216 msgid "Search Supplier Parts" msgstr "Sök efter leverantörsartikel" -#: common/models.py:2190 +#: common/models.py:2217 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2195 +#: common/models.py:2222 msgid "Search Manufacturer Parts" msgstr "Sök efter tillverkarartikel" -#: common/models.py:2196 +#: common/models.py:2223 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2201 +#: common/models.py:2228 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2202 +#: common/models.py:2229 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2207 +#: common/models.py:2234 msgid "Search Categories" msgstr "" -#: common/models.py:2208 +#: common/models.py:2235 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2213 +#: common/models.py:2240 msgid "Search Stock" msgstr "" -#: common/models.py:2214 +#: common/models.py:2241 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2219 +#: common/models.py:2246 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2221 +#: common/models.py:2248 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2227 +#: common/models.py:2254 msgid "Search Locations" msgstr "" -#: common/models.py:2228 +#: common/models.py:2255 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2233 +#: common/models.py:2260 msgid "Search Companies" msgstr "" -#: common/models.py:2234 +#: common/models.py:2261 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2239 +#: common/models.py:2266 msgid "Search Build Orders" msgstr "" -#: common/models.py:2240 +#: common/models.py:2267 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2245 +#: common/models.py:2272 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2246 +#: common/models.py:2273 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2251 +#: common/models.py:2278 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2253 +#: common/models.py:2280 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2259 +#: common/models.py:2286 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2260 +#: common/models.py:2287 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2265 +#: common/models.py:2292 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2267 +#: common/models.py:2294 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2273 +#: common/models.py:2300 msgid "Search Return Orders" msgstr "" -#: common/models.py:2274 +#: common/models.py:2301 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2279 +#: common/models.py:2306 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2281 +#: common/models.py:2308 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2287 +#: common/models.py:2314 msgid "Search Preview Results" msgstr "" -#: common/models.py:2289 +#: common/models.py:2316 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2295 +#: common/models.py:2322 msgid "Regex Search" msgstr "" -#: common/models.py:2296 +#: common/models.py:2323 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2301 +#: common/models.py:2328 msgid "Whole Word Search" msgstr "" -#: common/models.py:2302 +#: common/models.py:2329 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2307 +#: common/models.py:2334 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2308 +#: common/models.py:2335 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2313 +#: common/models.py:2340 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2314 +#: common/models.py:2341 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2319 +#: common/models.py:2346 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2320 +#: common/models.py:2347 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2325 +#: common/models.py:2352 msgid "Date Format" msgstr "" -#: common/models.py:2326 +#: common/models.py:2353 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2366 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2340 +#: common/models.py:2367 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2372 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2347 +#: common/models.py:2374 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2353 +#: common/models.py:2380 msgid "Table String Length" msgstr "" -#: common/models.py:2355 +#: common/models.py:2382 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2361 +#: common/models.py:2388 msgid "Default part label template" msgstr "" -#: common/models.py:2362 +#: common/models.py:2389 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2367 +#: common/models.py:2394 msgid "Default stock item template" msgstr "" -#: common/models.py:2369 +#: common/models.py:2396 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2375 +#: common/models.py:2402 msgid "Default stock location label template" msgstr "" -#: common/models.py:2377 +#: common/models.py:2404 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2383 +#: common/models.py:2410 msgid "Receive error reports" msgstr "" -#: common/models.py:2384 +#: common/models.py:2411 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2389 +#: common/models.py:2416 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2417 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2460 msgid "Price break quantity" msgstr "" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3503,23 +3536,23 @@ msgstr "" msgid "Price" msgstr "" -#: common/models.py:2441 +#: common/models.py:2468 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2639 common/models.py:2824 msgid "Endpoint" msgstr "" -#: common/models.py:2613 +#: common/models.py:2640 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2623 +#: common/models.py:2650 msgid "Name for this webhook" msgstr "" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3529,101 +3562,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2627 +#: common/models.py:2654 msgid "Is this webhook active" msgstr "" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2670 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2644 +#: common/models.py:2671 msgid "Token for access" msgstr "" -#: common/models.py:2652 +#: common/models.py:2679 msgid "Secret" msgstr "" -#: common/models.py:2653 +#: common/models.py:2680 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2761 +#: common/models.py:2788 msgid "Message ID" msgstr "" -#: common/models.py:2762 +#: common/models.py:2789 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2770 +#: common/models.py:2797 msgid "Host" msgstr "" -#: common/models.py:2771 +#: common/models.py:2798 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2779 +#: common/models.py:2806 msgid "Header" msgstr "" -#: common/models.py:2780 +#: common/models.py:2807 msgid "Header of this message" msgstr "" -#: common/models.py:2787 +#: common/models.py:2814 msgid "Body" msgstr "" -#: common/models.py:2788 +#: common/models.py:2815 msgid "Body of this message" msgstr "" -#: common/models.py:2798 +#: common/models.py:2825 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2803 +#: common/models.py:2830 msgid "Worked on" msgstr "" -#: common/models.py:2804 +#: common/models.py:2831 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2930 +#: common/models.py:2957 msgid "Id" msgstr "" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2959 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2963 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2965 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2967 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Read" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Was this news item read?" msgstr "" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2987 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3633,31 +3666,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2960 +#: common/models.py:2987 msgid "Image file" msgstr "" -#: common/models.py:3002 +#: common/models.py:3029 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3021 +#: common/models.py:3048 msgid "Unit name" msgstr "" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3029 +#: common/models.py:3056 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3037 +#: common/models.py:3064 msgid "Unit definition" msgstr "" @@ -3961,7 +3994,7 @@ msgid "Link to address information (external)" msgstr "" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" @@ -3972,7 +4005,7 @@ msgstr "" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3987,7 +4020,7 @@ msgid "Select manufacturer" msgstr "" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4022,9 +4055,9 @@ msgstr "" #: company/models.py:615 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2438 templates/js/translated/company.js:1156 +#: stock/models.py:2441 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1519 msgid "Value" msgstr "" @@ -4033,7 +4066,7 @@ msgid "Parameter value" msgstr "" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4059,7 +4092,7 @@ msgstr "" #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4076,7 +4109,7 @@ msgstr "Leverantör" msgid "Select supplier" msgstr "Välj leverantör" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "" @@ -4093,13 +4126,13 @@ msgid "Supplier part description" msgstr "" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4066 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:579 msgid "Note" msgstr "" @@ -4112,10 +4145,10 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 -#: templates/js/translated/stock.js:2387 +#: templates/js/translated/stock.js:2423 msgid "Packaging" msgstr "" @@ -4157,7 +4190,7 @@ msgstr "" msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "" @@ -4218,13 +4251,13 @@ msgstr "Radera bild" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1100 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 #: templates/js/translated/return_order.js:296 #: templates/js/translated/sales_order.js:784 -#: templates/js/translated/stock.js:2923 +#: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:804 msgid "Customer" msgstr "Kund" @@ -4429,8 +4462,9 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "Leverantörer" @@ -4482,7 +4516,7 @@ msgstr "Adresser" #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2243 +#: templates/js/translated/stock.js:2279 msgid "Supplier Part" msgstr "" @@ -4528,7 +4562,7 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4577,15 +4611,17 @@ msgstr "" msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 -#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:193 msgid "Stock Items" msgstr "" @@ -4639,8 +4675,8 @@ msgstr "Etikett" msgid "Label template file" msgstr "" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" @@ -4665,7 +4701,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "" @@ -4679,8 +4715,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "" @@ -4821,7 +4857,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1674 -#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "" @@ -4830,7 +4866,7 @@ msgstr "" #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 -#: templates/js/translated/stock.js:2905 +#: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "" @@ -4838,11 +4874,11 @@ msgstr "" msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -5029,9 +5065,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2274 +#: templates/js/translated/stock.js:2310 msgid "Purchase Price" msgstr "" @@ -5084,8 +5120,8 @@ msgstr "" msgid "User who checked this shipment" msgstr "" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "" @@ -5133,7 +5169,7 @@ msgstr "" msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "" @@ -5207,159 +5243,159 @@ msgstr "" msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Streckkod" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:610 +#: order/serializers.py:632 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1677 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "" @@ -5733,7 +5769,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" @@ -5763,12 +5799,12 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3917 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3918 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5780,12 +5816,12 @@ msgstr "" #: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 -#: templates/js/translated/stock.js:1999 +#: templates/js/translated/stock.js:2035 msgid "IPN" msgstr "" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" @@ -5861,10 +5897,10 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -5885,17 +5921,17 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3919 msgid "Part IPN" msgstr "" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5973,8 +6009,8 @@ msgstr "" msgid "This option must be selected" msgstr "" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3862 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5982,12 +6018,17 @@ msgstr "" msgid "Category" msgstr "Kategori" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5995,7 +6036,7 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3863 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -6010,7 +6051,8 @@ msgstr "" msgid "Default location for parts in this category" msgstr "" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 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" @@ -6076,7 +6118,7 @@ msgstr "" msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3918 msgid "Part name" msgstr "" @@ -6358,7 +6400,7 @@ msgstr "" #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1732 -#: templates/js/translated/stock.js:2785 +#: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" @@ -6410,586 +6452,602 @@ msgstr "" msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3448 -msgid "Test with this name already exists for this part" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "" -#: part/models.py:3496 +#: part/models.py:3505 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "" -#: part/models.py:3503 +#: part/models.py:3512 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3870 part/models.py:3871 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3877 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3847 +#: part/models.py:3878 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3885 +#: part/models.py:3916 msgid "Part ID or part name" msgstr "" -#: part/models.py:3886 +#: part/models.py:3917 msgid "Unique part ID value" msgstr "" -#: part/models.py:3888 +#: part/models.py:3919 msgid "Part IPN value" msgstr "" -#: part/models.py:3889 +#: part/models.py:3920 msgid "Level" msgstr "" -#: part/models.py:3889 +#: part/models.py:3920 msgid "BOM level" msgstr "" -#: part/models.py:3979 +#: part/models.py:4010 msgid "Select parent part" msgstr "" -#: part/models.py:3989 +#: part/models.py:4020 msgid "Sub part" msgstr "" -#: part/models.py:3990 +#: part/models.py:4021 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4001 +#: part/models.py:4032 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4007 +#: part/models.py:4038 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4013 +#: part/models.py:4044 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4051 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4021 +#: part/models.py:4052 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4028 +#: part/models.py:4059 msgid "BOM item reference" msgstr "" -#: part/models.py:4036 +#: part/models.py:4067 msgid "BOM item notes" msgstr "" -#: part/models.py:4042 +#: part/models.py:4073 msgid "Checksum" msgstr "" -#: part/models.py:4043 +#: part/models.py:4074 msgid "BOM line checksum" msgstr "" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4079 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4049 +#: part/models.py:4080 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4085 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:4055 +#: part/models.py:4086 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4091 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4061 +#: part/models.py:4092 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4146 stock/models.py:649 +#: part/models.py:4177 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4187 part/models.py:4189 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4298 +#: part/models.py:4329 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4319 +#: part/models.py:4350 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4332 +#: part/models.py:4363 msgid "Parent BOM item" msgstr "" -#: part/models.py:4340 +#: part/models.py:4371 msgid "Substitute part" msgstr "" -#: part/models.py:4356 +#: part/models.py:4387 msgid "Part 1" msgstr "" -#: part/models.py:4364 +#: part/models.py:4395 msgid "Part 2" msgstr "" -#: part/models.py:4365 +#: part/models.py:4396 msgid "Select Related Part" msgstr "" -#: part/models.py:4384 +#: part/models.py:4415 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4389 +#: part/models.py:4420 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "Välj kategori" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:432 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:480 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1104 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1078 +#: part/serializers.py:1114 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1088 +#: part/serializers.py:1124 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "Generera rapport" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1647 +#: part/serializers.py:1693 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1659 +#: part/serializers.py:1705 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1694 +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "" @@ -7147,7 +7205,7 @@ msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/stock.js:2179 users/models.py:191 +#: templates/js/translated/stock.js:2215 users/models.py:191 msgid "Stocktake" msgstr "" @@ -7221,7 +7279,7 @@ msgid "Validate BOM" msgstr "" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "" @@ -7405,7 +7463,7 @@ msgstr "" msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "" @@ -7509,7 +7567,7 @@ msgstr "" #: templates/InvenTree/settings/sidebar.html:51 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 -#: templates/js/translated/stock.js:2033 templates/navbar.html:31 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7555,7 +7613,7 @@ msgstr "Redigera" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 -#: templates/js/translated/stock.js:2209 +#: templates/js/translated/stock.js:2245 msgid "Last Updated" msgstr "Senast uppdaterad" @@ -7999,7 +8057,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "" @@ -8170,7 +8228,7 @@ msgstr "" msgid "Method" msgstr "" -#: plugin/plugin.py:264 +#: plugin/plugin.py:270 msgid "No author found" msgstr "" @@ -8307,16 +8365,16 @@ msgstr "" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "" @@ -8336,103 +8394,111 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" msgstr "" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" msgstr "" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8499,12 +8565,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1492 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Result" msgstr "" @@ -8531,7 +8597,7 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:168 #: stock/admin.py:162 templates/js/translated/stock.js:700 -#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110 msgid "Serial" msgstr "" @@ -8615,7 +8681,7 @@ msgstr "" #: stock/admin.py:256 stock/models.py:886 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2193 users/models.py:113 +#: templates/js/translated/stock.js:2229 users/models.py:113 msgid "Expiry Date" msgstr "" @@ -8713,7 +8779,7 @@ msgstr "" msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:174 templates/js/translated/stock.js:2745 +#: stock/models.py:174 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" @@ -8722,7 +8788,7 @@ msgstr "" msgid "This is an external stock location" msgstr "" -#: stock/models.py:181 templates/js/translated/stock.js:2754 +#: stock/models.py:181 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" @@ -8739,7 +8805,7 @@ msgstr "" msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:290 msgid "Stock item cannot be created for virtual parts" msgstr "" @@ -8784,7 +8850,7 @@ msgstr "" msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1351 msgid "Packaging this stock item is stored in" msgstr "" @@ -8796,7 +8862,7 @@ msgstr "" msgid "Serial number for this item" msgstr "" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1334 msgid "Batch code for this stock item" msgstr "" @@ -8873,7 +8939,7 @@ msgstr "" msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:529 msgid "Serial numbers already exist" msgstr "" @@ -8905,7 +8971,7 @@ msgstr "" msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1240 msgid "Duplicate stock items" msgstr "" @@ -8929,207 +8995,236 @@ msgstr "" msgid "Entry notes" msgstr "" -#: stock/models.py:2399 +#: stock/models.py:2402 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2405 +#: stock/models.py:2408 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Test result" msgstr "" -#: stock/models.py:2439 +#: stock/models.py:2442 msgid "Test output value" msgstr "" -#: stock/models.py:2447 +#: stock/models.py:2450 msgid "Test result attachment" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2454 msgid "Test notes" msgstr "" -#: stock/serializers.py:96 +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "" + +#: stock/models.py:2463 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2469 +msgid "Started" +msgstr "" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:100 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:119 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 +#: stock/serializers.py:151 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:184 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:267 +#: stock/serializers.py:282 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:380 +#: stock/serializers.py:402 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:442 +#: stock/serializers.py:464 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:455 +#: stock/serializers.py:477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:462 +#: stock/serializers.py:484 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:480 +#: stock/serializers.py:502 msgid "Optional note field" msgstr "" -#: stock/serializers.py:490 +#: stock/serializers.py:512 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:545 +#: stock/serializers.py:567 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:574 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:553 +#: stock/serializers.py:575 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:566 +#: stock/serializers.py:588 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:596 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:581 +#: stock/serializers.py:607 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:620 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:628 +#: stock/serializers.py:655 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:663 +#: stock/serializers.py:690 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:676 +#: stock/serializers.py:703 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:693 +#: stock/serializers.py:720 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:724 +#: stock/serializers.py:751 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:761 +#: stock/serializers.py:788 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:767 +#: stock/serializers.py:794 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1036 +#: stock/serializers.py:1069 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1040 +#: stock/serializers.py:1073 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1044 +#: stock/serializers.py:1077 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1068 +#: stock/serializers.py:1101 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1074 +#: stock/serializers.py:1107 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1082 +#: stock/serializers.py:1115 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1125 stock/serializers.py:1379 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1171 +#: stock/serializers.py:1204 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1176 +#: stock/serializers.py:1209 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1177 +#: stock/serializers.py:1210 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1182 +#: stock/serializers.py:1215 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1183 +#: stock/serializers.py:1216 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1193 +#: stock/serializers.py:1226 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1260 +#: stock/serializers.py:1293 msgid "No Change" msgstr "" -#: stock/serializers.py:1289 +#: stock/serializers.py:1322 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1308 +#: stock/serializers.py:1341 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1336 +#: stock/serializers.py:1369 msgid "Stock transaction notes" msgstr "" @@ -9154,7 +9249,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 msgid "Delete Test Data" msgstr "" @@ -9170,15 +9265,15 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:274 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 msgid "Add Test Result" msgstr "" @@ -9201,17 +9296,17 @@ msgid "Stock adjustment actions" msgstr "" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 msgid "Count stock" msgstr "" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:1803 msgid "Add stock" msgstr "" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1776 +#: templates/js/translated/stock.js:1812 msgid "Remove stock" msgstr "" @@ -9220,12 +9315,12 @@ msgid "Serialize stock" msgstr "" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 msgid "Transfer stock" msgstr "" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1884 msgid "Assign to customer" msgstr "" @@ -9364,7 +9459,7 @@ msgid "No stocktake performed" msgstr "" #: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1915 +#: templates/js/translated/stock.js:1951 msgid "stock item" msgstr "" @@ -9469,7 +9564,7 @@ msgid "New Location" msgstr "" #: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2536 +#: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" @@ -10063,7 +10158,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:37 msgid "New Location Type" msgstr "" @@ -10120,7 +10215,7 @@ msgstr "" msgid "Stock Settings" msgstr "" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:33 msgid "Stock Location Types" msgstr "" @@ -10662,7 +10757,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "" @@ -10676,7 +10771,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "" @@ -11021,7 +11116,7 @@ msgstr "" #: templates/js/translated/bom.js:826 msgid "Delete items" -msgstr "" +msgstr "Radera objekt" #: templates/js/translated/bom.js:936 msgid "Load BOM for subassembly" @@ -11051,62 +11146,66 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "" @@ -11389,7 +11488,7 @@ msgstr "" #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 -#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11401,7 +11500,7 @@ msgstr "" msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006 +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" @@ -11449,29 +11548,29 @@ msgstr "" msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "" @@ -11804,15 +11903,15 @@ msgstr "Söker" msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3087 +#: templates/js/translated/forms.js:3103 msgid "Select Columns" msgstr "" @@ -12289,7 +12388,7 @@ msgid "No category" msgstr "Ingen kategori" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 -#: templates/js/translated/stock.js:2633 +#: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" @@ -12301,7 +12400,7 @@ msgstr "" msgid "No subcategories found" msgstr "Inga underkategorier hittades" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" @@ -12313,64 +12412,64 @@ msgstr "" msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "resultat" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" @@ -12907,7 +13006,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1737 +#: templates/js/translated/stock.js:1773 msgid "Shipped to customer" msgstr "" @@ -13165,7 +13264,7 @@ msgstr "" msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" @@ -13189,248 +13288,256 @@ msgstr "" msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1440 +#: templates/js/translated/stock.js:1447 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1443 +#: templates/js/translated/stock.js:1450 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1466 +#: templates/js/translated/stock.js:1473 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1530 +#: templates/js/translated/stock.js:1537 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1677 +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1733 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1729 +#: templates/js/translated/stock.js:1765 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1769 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1741 +#: templates/js/translated/stock.js:1777 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1747 +#: templates/js/translated/stock.js:1783 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1839 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1848 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:1897 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1916 +#: templates/js/translated/stock.js:1952 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1921 +#: templates/js/translated/stock.js:1957 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1932 +#: templates/js/translated/stock.js:1968 msgid "Stock Actions" msgstr "" -#: templates/js/translated/stock.js:1976 +#: templates/js/translated/stock.js:2012 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2054 +#: templates/js/translated/stock.js:2090 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2059 +#: templates/js/translated/stock.js:2095 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2062 +#: templates/js/translated/stock.js:2098 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2065 +#: templates/js/translated/stock.js:2101 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2067 +#: templates/js/translated/stock.js:2103 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2069 +#: templates/js/translated/stock.js:2105 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2072 +#: templates/js/translated/stock.js:2108 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2074 +#: templates/js/translated/stock.js:2110 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2114 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2080 +#: templates/js/translated/stock.js:2116 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2085 +#: templates/js/translated/stock.js:2121 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2087 +#: templates/js/translated/stock.js:2123 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2089 +#: templates/js/translated/stock.js:2125 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2129 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2258 +#: templates/js/translated/stock.js:2294 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2305 +#: templates/js/translated/stock.js:2341 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2433 +#: templates/js/translated/stock.js:2469 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2573 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2692 +#: templates/js/translated/stock.js:2728 msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2810 +#: templates/js/translated/stock.js:2846 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2814 +#: templates/js/translated/stock.js:2850 msgid "No changes" msgstr "Inga ändringar" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:2862 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2848 +#: templates/js/translated/stock.js:2884 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2865 +#: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2880 +#: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2897 +#: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2914 +#: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3005 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2977 +#: templates/js/translated/stock.js:3013 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:3049 +#: templates/js/translated/stock.js:3085 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139 +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:3161 +#: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:3182 +#: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:3183 +#: 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:3185 +#: 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:3186 +#: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:3187 +#: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:3188 +#: 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:3201 +#: templates/js/translated/stock.js:3237 msgid "Select part to install" msgstr "" -#: templates/js/translated/stock.js:3264 +#: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" msgstr "" -#: templates/js/translated/stock.js:3277 +#: templates/js/translated/stock.js:3313 msgid "Selected stock items" msgstr "" -#: templates/js/translated/stock.js:3281 +#: templates/js/translated/stock.js:3317 msgid "Change Stock Status" msgstr "" @@ -13766,7 +13873,7 @@ msgstr "Kolumner" #: templates/js/translated/tables.js:561 msgid "All" -msgstr "" +msgstr "Alla" #: templates/navbar.html:45 msgid "Buy" diff --git a/InvenTree/locale/th/LC_MESSAGES/django.po b/InvenTree/locale/th/LC_MESSAGES/django.po index 1f7f53fc5f..8eee74f3aa 100644 --- a/InvenTree/locale/th/LC_MESSAGES/django.po +++ b/InvenTree/locale/th/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 04:05+0000\n" -"PO-Revision-Date: 2024-02-28 07:23\n" +"POT-Creation-Date: 2024-03-22 10:34+0000\n" +"PO-Revision-Date: 2024-03-23 14:58\n" "Last-Translator: \n" "Language-Team: Thai\n" "Language: th_TH\n" @@ -19,7 +19,7 @@ msgstr "" #: InvenTree/api.py:198 msgid "API endpoint not found" -msgstr "" +msgstr "ไม่พบ API endpoint" #: InvenTree/api.py:462 msgid "User does not have permission to view this model" @@ -30,20 +30,20 @@ msgstr "" msgid "Invalid unit provided ({unit})" msgstr "" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" msgstr "" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" msgstr "" @@ -64,18 +64,18 @@ msgstr "ป้อนวันที่" #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 #: templates/js/translated/return_order.js:776 #: templates/js/translated/sales_order.js:1067 #: templates/js/translated/sales_order.js:1982 -#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 msgid "Notes" msgstr "หมายเหตุ" @@ -132,42 +132,42 @@ msgstr "" msgid "Registration is disabled." msgstr "" -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "ปริมาณสินค้าไม่ถูกต้อง" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "หมายเลขซีเรียลซ้ำกัน" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "ไม่พบหมายเลขซีเรียล" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "" @@ -203,131 +203,135 @@ msgstr "" msgid "Supplied URL is not a valid image file" msgstr "" -#: InvenTree/locales.py:16 +#: InvenTree/locales.py:18 msgid "Bulgarian" msgstr "" -#: InvenTree/locales.py:17 +#: InvenTree/locales.py:19 msgid "Czech" msgstr "" -#: InvenTree/locales.py:18 +#: InvenTree/locales.py:20 msgid "Danish" msgstr "" -#: InvenTree/locales.py:19 +#: InvenTree/locales.py:21 msgid "German" msgstr "" -#: InvenTree/locales.py:20 +#: InvenTree/locales.py:22 msgid "Greek" msgstr "" -#: InvenTree/locales.py:21 +#: InvenTree/locales.py:23 msgid "English" msgstr "" -#: InvenTree/locales.py:22 +#: InvenTree/locales.py:24 msgid "Spanish" msgstr "" -#: InvenTree/locales.py:23 +#: InvenTree/locales.py:25 msgid "Spanish (Mexican)" msgstr "" -#: InvenTree/locales.py:24 +#: InvenTree/locales.py:26 msgid "Farsi / Persian" msgstr "" -#: InvenTree/locales.py:25 +#: InvenTree/locales.py:27 msgid "Finnish" msgstr "" -#: InvenTree/locales.py:26 +#: InvenTree/locales.py:28 msgid "French" msgstr "" -#: InvenTree/locales.py:27 +#: InvenTree/locales.py:29 msgid "Hebrew" msgstr "" -#: InvenTree/locales.py:28 +#: InvenTree/locales.py:30 msgid "Hindi" msgstr "" -#: InvenTree/locales.py:29 +#: InvenTree/locales.py:31 msgid "Hungarian" msgstr "" -#: InvenTree/locales.py:30 +#: InvenTree/locales.py:32 msgid "Italian" msgstr "" -#: InvenTree/locales.py:31 +#: InvenTree/locales.py:33 msgid "Japanese" msgstr "" -#: InvenTree/locales.py:32 +#: InvenTree/locales.py:34 msgid "Korean" msgstr "" -#: InvenTree/locales.py:33 -msgid "Dutch" -msgstr "" - -#: InvenTree/locales.py:34 -msgid "Norwegian" -msgstr "" - #: InvenTree/locales.py:35 -msgid "Polish" +msgid "Latvian" msgstr "" #: InvenTree/locales.py:36 -msgid "Portuguese" -msgstr "ภาษาโปรตุเกส" +msgid "Dutch" +msgstr "" #: InvenTree/locales.py:37 -msgid "Portuguese (Brazilian)" +msgid "Norwegian" msgstr "" #: InvenTree/locales.py:38 -msgid "Russian" -msgstr "ภาษารัสเซีย" - -#: InvenTree/locales.py:39 -msgid "Slovak" +msgid "Polish" msgstr "" +#: InvenTree/locales.py:39 +msgid "Portuguese" +msgstr "ภาษาโปรตุเกส" + #: InvenTree/locales.py:40 -msgid "Slovenian" +msgid "Portuguese (Brazilian)" msgstr "" #: InvenTree/locales.py:41 +msgid "Russian" +msgstr "ภาษารัสเซีย" + +#: InvenTree/locales.py:42 +msgid "Slovak" +msgstr "" + +#: InvenTree/locales.py:43 +msgid "Slovenian" +msgstr "" + +#: InvenTree/locales.py:44 msgid "Serbian" msgstr "" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:45 msgid "Swedish" msgstr "ภาษาสวีเดน" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:46 msgid "Thai" msgstr "ภาษาไทย" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:47 msgid "Turkish" msgstr "" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:48 msgid "Vietnamese" msgstr "ภาษาเวียดนาม" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:49 msgid "Chinese (Simplified)" msgstr "" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:50 msgid "Chinese (Traditional)" msgstr "" @@ -341,7 +345,7 @@ msgstr "" #: templates/InvenTree/settings/user.html:49 #: templates/js/translated/company.js:667 msgid "Email" -msgstr "" +msgstr "อีเมล" #: InvenTree/models.py:107 msgid "Error running plugin validation" @@ -353,7 +357,7 @@ msgstr "" #: InvenTree/models.py:168 msgid "Plugin Metadata" -msgstr "" +msgstr "ข้อมูลเมตาของปลั๊กอิน" #: InvenTree/models.py:169 msgid "JSON metadata field, for use by external plugins" @@ -385,13 +389,13 @@ msgstr "" #: InvenTree/models.py:537 msgid "Missing file" -msgstr "" +msgstr "ไม่พบไฟล์" #: InvenTree/models.py:538 msgid "Missing external link" msgstr "" -#: InvenTree/models.py:559 stock/models.py:2446 +#: InvenTree/models.py:559 stock/models.py:2449 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -401,7 +405,7 @@ msgstr "ไฟล์แนบ" msgid "Select file to attach" msgstr "เลือกไฟล์ที่ต้องการแนบ" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -432,13 +436,13 @@ msgstr "ความคิดเห็น" msgid "File comment" msgstr "ความเห็นของไฟล์" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:3000 users/models.py:100 +#: templates/js/translated/stock.js:3036 users/models.py:100 msgid "User" msgstr "ผู้ใช้งาน" @@ -479,10 +483,10 @@ msgstr "" msgid "Invalid choice" msgstr "" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -495,7 +499,7 @@ msgstr "" #: templates/js/translated/company.js:1155 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "ชื่อ" @@ -506,10 +510,10 @@ msgstr "ชื่อ" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -523,7 +527,7 @@ msgstr "ชื่อ" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -531,8 +535,8 @@ msgstr "ชื่อ" #: templates/js/translated/return_order.js:314 #: templates/js/translated/sales_order.js:802 #: templates/js/translated/sales_order.js:1812 -#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021 -#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "คำอธิบาย" @@ -545,7 +549,7 @@ msgid "parent" msgstr "" #: InvenTree/models.py:916 templates/js/translated/part.js:2794 -#: templates/js/translated/stock.js:2721 +#: templates/js/translated/stock.js:2757 msgid "Path" msgstr "" @@ -581,7 +585,7 @@ msgstr "เกิดข้อผิดพลาดที่เซิร์ฟเ msgid "An error has been logged by the server." msgstr "" -#: InvenTree/serializers.py:62 part/models.py:4134 +#: InvenTree/serializers.py:62 part/models.py:4165 msgid "Must be a valid number" msgstr "ต้องเป็นตัวเลข" @@ -590,95 +594,95 @@ msgstr "ต้องเป็นตัวเลข" #: templates/InvenTree/settings/settings_staff_js.html:44 #: templates/currency_data.html:5 msgid "Currency" -msgstr "" +msgstr "สกุลเงิน" #: InvenTree/serializers.py:102 msgid "Select currency from available options" msgstr "" -#: InvenTree/serializers.py:436 +#: InvenTree/serializers.py:441 msgid "You do not have permission to change this user role." msgstr "" -#: InvenTree/serializers.py:448 +#: InvenTree/serializers.py:453 msgid "Only superusers can create new users" msgstr "" -#: InvenTree/serializers.py:467 +#: InvenTree/serializers.py:472 msgid "Your account has been created." msgstr "" -#: InvenTree/serializers.py:469 +#: InvenTree/serializers.py:474 msgid "Please use the password reset function to login" msgstr "" -#: InvenTree/serializers.py:476 +#: InvenTree/serializers.py:481 msgid "Welcome to InvenTree" -msgstr "" +msgstr "ยินดีต้อนรับเข้าสู่ Inventree" -#: InvenTree/serializers.py:537 +#: InvenTree/serializers.py:542 msgid "Filename" msgstr "ชื่อไฟล์" -#: InvenTree/serializers.py:571 +#: InvenTree/serializers.py:576 msgid "Invalid value" msgstr "" -#: InvenTree/serializers.py:591 +#: InvenTree/serializers.py:596 msgid "Data File" msgstr "ไฟล์ข้อมูล" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:597 msgid "Select data file for upload" msgstr "เลือกไฟล์ข้อมูลที่จะอัปโหลด" -#: InvenTree/serializers.py:609 +#: InvenTree/serializers.py:614 msgid "Unsupported file type" msgstr "" -#: InvenTree/serializers.py:615 +#: InvenTree/serializers.py:620 msgid "File is too large" msgstr "ไฟล์มีขนาดใหญ่เกินไป" -#: InvenTree/serializers.py:636 +#: InvenTree/serializers.py:641 msgid "No columns found in file" msgstr "" -#: InvenTree/serializers.py:639 +#: InvenTree/serializers.py:644 msgid "No data rows found in file" msgstr "" -#: InvenTree/serializers.py:752 +#: InvenTree/serializers.py:757 msgid "No data rows provided" msgstr "" -#: InvenTree/serializers.py:755 +#: InvenTree/serializers.py:760 msgid "No data columns supplied" msgstr "" -#: InvenTree/serializers.py:822 +#: InvenTree/serializers.py:827 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "" -#: InvenTree/serializers.py:831 +#: InvenTree/serializers.py:836 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:859 msgid "Remote Image" msgstr "" -#: InvenTree/serializers.py:855 +#: InvenTree/serializers.py:860 msgid "URL of remote image file" msgstr "" -#: InvenTree/serializers.py:873 +#: InvenTree/serializers.py:878 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/status.py:66 part/serializers.py:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "" @@ -772,27 +776,27 @@ msgstr "" #: InvenTree/status_codes.py:97 msgid "Assigned serial number" -msgstr "" +msgstr "กำหนดหมายเลขซีเรียลแล้ว" #: InvenTree/status_codes.py:100 msgid "Stock counted" -msgstr "" +msgstr "นับสต็อกแล้ว" #: InvenTree/status_codes.py:101 msgid "Stock manually added" -msgstr "" +msgstr "เพิ่มสต็อกแล้ว" #: InvenTree/status_codes.py:102 msgid "Stock manually removed" -msgstr "" +msgstr "ลบสต็อกแล้ว" #: InvenTree/status_codes.py:105 msgid "Location changed" -msgstr "" +msgstr "เปลี่ยนสถานที่แล้ว" #: InvenTree/status_codes.py:106 msgid "Stock updated" -msgstr "" +msgstr "อัพเดทสต็อกแล้ว" #: InvenTree/status_codes.py:109 msgid "Installed into assembly" @@ -818,7 +822,7 @@ msgstr "" msgid "Split child item" msgstr "" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 msgid "Merged stock items" msgstr "" @@ -838,7 +842,7 @@ msgstr "" msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 msgid "Consumed by build order" msgstr "" @@ -938,14 +942,14 @@ msgstr "เกี่ยวกับ Inventree" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4043 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4037 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -960,7 +964,7 @@ msgid "Tracked" msgstr "" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -985,7 +989,7 @@ msgstr "" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "" @@ -1014,7 +1018,7 @@ msgstr "" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4058 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1044,11 +1048,11 @@ msgstr "" #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3916 part/models.py:4009 +#: part/models.py:4370 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1059,7 +1063,7 @@ msgstr "" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:267 stock/serializers.py:689 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1086,9 +1090,9 @@ msgstr "" #: templates/js/translated/sales_order.js:1598 #: templates/js/translated/sales_order.js:1796 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960 -#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054 -#: templates/js/translated/stock.js:3200 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 msgid "Part" msgstr "" @@ -1146,8 +1150,8 @@ msgstr "" msgid "Build status code" msgstr "" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "" @@ -1182,7 +1186,7 @@ msgstr "" #: build/models.py:293 templates/js/translated/build.js:2205 msgid "Issued by" -msgstr "" +msgstr "ออกโดย" #: build/models.py:294 msgid "User who issued this build order" @@ -1242,53 +1246,53 @@ msgstr "" msgid "Project code for this build order" msgstr "" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "" -#: build/models.py:789 +#: build/models.py:805 msgid "Build output does not match Build Order" msgstr "" -#: build/models.py:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 msgid "Quantity must be greater than zero" -msgstr "" +msgstr "จำนวนต้องมีค่ามากกว่า 0" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" msgstr "" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4031 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1298,7 +1302,7 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:463 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1310,7 +1314,7 @@ msgstr "" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1325,43 +1329,43 @@ msgstr "" #: templates/js/translated/sales_order.js:1698 #: templates/js/translated/sales_order.js:1824 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 -#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985 -#: templates/js/translated/stock.js:3068 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1381 +#: build/models.py:1397 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1390 +#: build/models.py:1406 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "" -#: build/models.py:1473 +#: build/models.py:1489 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 @@ -1372,23 +1376,23 @@ msgstr "" #: templates/js/translated/sales_order.js:1605 #: templates/js/translated/sales_order.js:1692 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 -#: templates/js/translated/stock.js:2941 +#: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "" @@ -1425,11 +1429,11 @@ msgstr "" msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" -msgstr "" +msgstr "Serial Numbers" #: build/serializers.py:288 msgid "Enter serial numbers for build outputs" @@ -1451,10 +1455,10 @@ msgstr "" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1466,10 +1470,10 @@ msgstr "" #: templates/js/translated/sales_order.js:1627 #: templates/js/translated/sales_order.js:1706 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164 -#: templates/js/translated/stock.js:2835 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 msgid "Location" -msgstr "" +msgstr "สถานที่" #: build/serializers.py:427 msgid "Stock location for scrapped outputs" @@ -1493,16 +1497,16 @@ msgstr "" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 #: templates/js/translated/purchase_order.js:1723 #: templates/js/translated/return_order.js:331 #: templates/js/translated/sales_order.js:819 -#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959 -#: templates/js/translated/stock.js:3084 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 msgid "Status" msgstr "สถานะ" @@ -1566,7 +1570,7 @@ msgstr "" msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "" @@ -1602,11 +1606,11 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1065 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" @@ -1619,7 +1623,7 @@ msgstr "" msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "" @@ -1659,44 +1663,45 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3926 part/models.py:4362 #: stock/api.py:745 msgid "BOM Item" msgstr "" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1862,7 +1867,7 @@ msgstr "" #: templates/js/translated/pricing.js:929 #: templates/js/translated/sales_order.js:769 #: templates/js/translated/sales_order.js:992 -#: templates/js/translated/stock.js:2888 +#: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "" @@ -1920,8 +1925,8 @@ msgstr "" #: templates/js/translated/build.js:1377 #: templates/js/translated/model_renderers.js:235 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153 -#: templates/js/translated/stock.js:3091 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" @@ -1943,7 +1948,7 @@ msgstr "" #: order/templates/order/sales_order_base.html:202 #: templates/js/translated/table_filters.js:689 msgid "Completed" -msgstr "" +msgstr "สำเร็จแล้ว" #: build/templates/build/detail.html:153 msgid "Build not complete" @@ -1990,27 +1995,31 @@ msgstr "" msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:210 -msgid "Incomplete Build Outputs" -msgstr "" - -#: build/templates/build/detail.html:214 -msgid "Create new build output" +#: 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:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2026,15 +2035,15 @@ msgstr "" msgid "Attachments" msgstr "" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" msgstr "" @@ -2112,1390 +2121,1414 @@ msgstr "" msgid "User or group responsible for this project" msgstr "" -#: common/models.py:737 +#: common/models.py:744 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:741 +#: common/models.py:748 msgid "Settings value" msgstr "" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "" -#: common/models.py:1231 +#: common/models.py:1238 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1283 +#: common/models.py:1290 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "" -#: common/models.py:1298 +#: common/models.py:1305 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "" -#: common/models.py:1305 +#: common/models.py:1312 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "" -#: common/models.py:1332 +#: common/models.py:1339 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "" -#: common/models.py:1339 +#: common/models.py:1346 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "" -#: common/models.py:1346 +#: common/models.py:1353 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1352 +#: common/models.py:1359 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1360 +#: common/models.py:1367 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1369 +#: common/models.py:1376 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1378 +#: common/models.py:1385 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1386 +#: common/models.py:1393 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1399 +#: common/models.py:1406 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "" -#: common/models.py:1411 +#: common/models.py:1418 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1415 +#: common/models.py:1422 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1421 +#: common/models.py:1428 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1427 +#: common/models.py:1434 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1433 +#: common/models.py:1440 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1439 +#: common/models.py:1446 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1505 +#: common/models.py:1512 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1512 +#: common/models.py:1519 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "" -#: common/models.py:1525 +#: common/models.py:1532 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1526 +#: common/models.py:1533 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1530 +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1532 +#: common/models.py:1539 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1540 +#: common/models.py:1547 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1548 +#: common/models.py:1555 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1564 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1580 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1588 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1595 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1603 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1611 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1618 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1632 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1645 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: 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:202 msgid "Page Size" msgstr "" -#: common/models.py:1651 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1657 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1664 +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1671 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1677 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1692 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1704 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1711 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1719 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1725 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1731 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1736 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1741 +#: 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 "Build Order Reference Pattern" msgstr "" -#: common/models.py:1743 +#: common/models.py:1764 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1757 +#: common/models.py:1778 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1765 +#: common/models.py:1786 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1773 +#: common/models.py:1794 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1780 +#: common/models.py:1801 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1787 +#: common/models.py:1808 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1795 +#: common/models.py:1816 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1803 +#: common/models.py:1824 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1811 +#: common/models.py:1832 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "" -#: common/models.py:1825 +#: common/models.py:1846 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1838 +#: common/models.py:1859 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1844 +#: common/models.py:1865 msgid "Email required" msgstr "" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1852 +#: common/models.py:1873 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "" -#: common/models.py:1859 +#: common/models.py:1880 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "" -#: common/models.py:1865 +#: common/models.py:1886 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "" -#: common/models.py:1879 +#: common/models.py:1900 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1892 +#: common/models.py:1913 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1929 +#: common/models.py:1950 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "" -#: common/models.py:1936 +#: common/models.py:1957 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1950 +#: common/models.py:1971 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1958 +#: common/models.py:1979 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1966 +#: common/models.py:1987 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1974 +#: common/models.py:1995 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2029 common/models.py:2429 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2043 +#: common/models.py:2070 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2045 +#: common/models.py:2072 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2051 +#: common/models.py:2078 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2052 +#: common/models.py:2079 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2057 +#: common/models.py:2084 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2058 +#: common/models.py:2085 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2063 +#: common/models.py:2090 msgid "Show latest parts" msgstr "" -#: common/models.py:2064 +#: common/models.py:2091 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2069 +#: common/models.py:2096 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2070 +#: common/models.py:2097 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2075 +#: common/models.py:2102 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2076 +#: common/models.py:2103 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2081 +#: common/models.py:2108 msgid "Show low stock" msgstr "" -#: common/models.py:2082 +#: common/models.py:2109 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2087 +#: common/models.py:2114 msgid "Show depleted stock" msgstr "" -#: common/models.py:2088 +#: common/models.py:2115 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2093 +#: common/models.py:2120 msgid "Show needed stock" msgstr "" -#: common/models.py:2094 +#: common/models.py:2121 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2099 +#: common/models.py:2126 msgid "Show expired stock" msgstr "" -#: common/models.py:2100 +#: common/models.py:2127 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2105 +#: common/models.py:2132 msgid "Show stale stock" msgstr "" -#: common/models.py:2106 +#: common/models.py:2133 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2111 +#: common/models.py:2138 msgid "Show pending builds" msgstr "" -#: common/models.py:2112 +#: common/models.py:2139 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2117 +#: common/models.py:2144 msgid "Show overdue builds" msgstr "" -#: common/models.py:2118 +#: common/models.py:2145 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2123 +#: common/models.py:2150 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2124 +#: common/models.py:2151 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2129 +#: common/models.py:2156 msgid "Show overdue POs" msgstr "" -#: common/models.py:2130 +#: common/models.py:2157 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2135 +#: common/models.py:2162 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2136 +#: common/models.py:2163 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2141 +#: common/models.py:2168 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2142 +#: common/models.py:2169 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2147 +#: common/models.py:2174 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2148 +#: common/models.py:2175 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2153 +#: common/models.py:2180 msgid "Show News" msgstr "" -#: common/models.py:2154 +#: common/models.py:2181 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2159 +#: common/models.py:2186 msgid "Inline label display" msgstr "" -#: common/models.py:2161 +#: common/models.py:2188 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2167 +#: common/models.py:2194 msgid "Default label printer" msgstr "" -#: common/models.py:2169 +#: common/models.py:2196 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2175 +#: common/models.py:2202 msgid "Inline report display" msgstr "" -#: common/models.py:2177 +#: common/models.py:2204 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2183 +#: common/models.py:2210 msgid "Search Parts" msgstr "" -#: common/models.py:2184 +#: common/models.py:2211 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2189 +#: common/models.py:2216 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2190 +#: common/models.py:2217 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2195 +#: common/models.py:2222 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2196 +#: common/models.py:2223 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2201 +#: common/models.py:2228 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2202 +#: common/models.py:2229 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2207 +#: common/models.py:2234 msgid "Search Categories" msgstr "" -#: common/models.py:2208 +#: common/models.py:2235 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2213 +#: common/models.py:2240 msgid "Search Stock" msgstr "" -#: common/models.py:2214 +#: common/models.py:2241 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2219 +#: common/models.py:2246 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2221 +#: common/models.py:2248 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2227 +#: common/models.py:2254 msgid "Search Locations" msgstr "" -#: common/models.py:2228 +#: common/models.py:2255 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2233 +#: common/models.py:2260 msgid "Search Companies" msgstr "" -#: common/models.py:2234 +#: common/models.py:2261 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2239 +#: common/models.py:2266 msgid "Search Build Orders" msgstr "" -#: common/models.py:2240 +#: common/models.py:2267 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2245 +#: common/models.py:2272 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2246 +#: common/models.py:2273 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2251 +#: common/models.py:2278 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2253 +#: common/models.py:2280 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2259 +#: common/models.py:2286 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2260 +#: common/models.py:2287 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2265 +#: common/models.py:2292 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2267 +#: common/models.py:2294 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2273 +#: common/models.py:2300 msgid "Search Return Orders" msgstr "" -#: common/models.py:2274 +#: common/models.py:2301 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2279 +#: common/models.py:2306 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2281 +#: common/models.py:2308 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2287 +#: common/models.py:2314 msgid "Search Preview Results" msgstr "" -#: common/models.py:2289 +#: common/models.py:2316 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2295 +#: common/models.py:2322 msgid "Regex Search" msgstr "" -#: common/models.py:2296 +#: common/models.py:2323 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2301 +#: common/models.py:2328 msgid "Whole Word Search" msgstr "" -#: common/models.py:2302 +#: common/models.py:2329 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2307 +#: common/models.py:2334 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2308 +#: common/models.py:2335 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2313 +#: common/models.py:2340 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2314 +#: common/models.py:2341 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2319 +#: common/models.py:2346 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2320 +#: common/models.py:2347 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2325 +#: common/models.py:2352 msgid "Date Format" msgstr "" -#: common/models.py:2326 +#: common/models.py:2353 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2366 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2340 +#: common/models.py:2367 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2372 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2347 +#: common/models.py:2374 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2353 +#: common/models.py:2380 msgid "Table String Length" msgstr "" -#: common/models.py:2355 +#: common/models.py:2382 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2361 +#: common/models.py:2388 msgid "Default part label template" msgstr "" -#: common/models.py:2362 +#: common/models.py:2389 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2367 +#: common/models.py:2394 msgid "Default stock item template" msgstr "" -#: common/models.py:2369 +#: common/models.py:2396 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2375 +#: common/models.py:2402 msgid "Default stock location label template" msgstr "" -#: common/models.py:2377 +#: common/models.py:2404 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2383 +#: common/models.py:2410 msgid "Receive error reports" msgstr "" -#: common/models.py:2384 +#: common/models.py:2411 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2389 +#: common/models.py:2416 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2417 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2460 msgid "Price break quantity" msgstr "" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3503,23 +3536,23 @@ msgstr "" msgid "Price" msgstr "" -#: common/models.py:2441 +#: common/models.py:2468 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2639 common/models.py:2824 msgid "Endpoint" msgstr "" -#: common/models.py:2613 +#: common/models.py:2640 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2623 +#: common/models.py:2650 msgid "Name for this webhook" msgstr "" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3529,101 +3562,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2627 +#: common/models.py:2654 msgid "Is this webhook active" msgstr "" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2670 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2644 +#: common/models.py:2671 msgid "Token for access" msgstr "" -#: common/models.py:2652 +#: common/models.py:2679 msgid "Secret" msgstr "" -#: common/models.py:2653 +#: common/models.py:2680 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2761 +#: common/models.py:2788 msgid "Message ID" msgstr "" -#: common/models.py:2762 +#: common/models.py:2789 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2770 +#: common/models.py:2797 msgid "Host" msgstr "" -#: common/models.py:2771 +#: common/models.py:2798 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2779 +#: common/models.py:2806 msgid "Header" msgstr "" -#: common/models.py:2780 +#: common/models.py:2807 msgid "Header of this message" msgstr "" -#: common/models.py:2787 +#: common/models.py:2814 msgid "Body" msgstr "" -#: common/models.py:2788 +#: common/models.py:2815 msgid "Body of this message" msgstr "" -#: common/models.py:2798 +#: common/models.py:2825 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2803 +#: common/models.py:2830 msgid "Worked on" msgstr "" -#: common/models.py:2804 +#: common/models.py:2831 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2930 +#: common/models.py:2957 msgid "Id" msgstr "" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2959 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2963 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2965 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2967 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Read" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Was this news item read?" msgstr "" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2987 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3633,31 +3666,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2960 +#: common/models.py:2987 msgid "Image file" msgstr "" -#: common/models.py:3002 +#: common/models.py:3029 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3021 +#: common/models.py:3048 msgid "Unit name" msgstr "" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3029 +#: common/models.py:3056 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3037 +#: common/models.py:3064 msgid "Unit definition" msgstr "" @@ -3961,7 +3994,7 @@ msgid "Link to address information (external)" msgstr "" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" @@ -3972,7 +4005,7 @@ msgstr "" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3987,7 +4020,7 @@ msgid "Select manufacturer" msgstr "" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4022,9 +4055,9 @@ msgstr "" #: company/models.py:615 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2438 templates/js/translated/company.js:1156 +#: stock/models.py:2441 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1519 msgid "Value" msgstr "" @@ -4033,7 +4066,7 @@ msgid "Parameter value" msgstr "" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4059,7 +4092,7 @@ msgstr "" #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4076,7 +4109,7 @@ msgstr "" msgid "Select supplier" msgstr "" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "" @@ -4093,13 +4126,13 @@ msgid "Supplier part description" msgstr "" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4066 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:579 msgid "Note" msgstr "" @@ -4112,10 +4145,10 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 -#: templates/js/translated/stock.js:2387 +#: templates/js/translated/stock.js:2423 msgid "Packaging" msgstr "" @@ -4157,7 +4190,7 @@ msgstr "" msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "" @@ -4218,13 +4251,13 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1100 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 #: templates/js/translated/return_order.js:296 #: templates/js/translated/sales_order.js:784 -#: templates/js/translated/stock.js:2923 +#: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:804 msgid "Customer" msgstr "" @@ -4429,8 +4462,9 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "" @@ -4482,7 +4516,7 @@ msgstr "" #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2243 +#: templates/js/translated/stock.js:2279 msgid "Supplier Part" msgstr "" @@ -4528,7 +4562,7 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4577,15 +4611,17 @@ msgstr "" msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 -#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:193 msgid "Stock Items" msgstr "" @@ -4639,8 +4675,8 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" @@ -4665,7 +4701,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "" @@ -4679,8 +4715,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "" @@ -4821,7 +4857,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1674 -#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "" @@ -4830,7 +4866,7 @@ msgstr "" #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 -#: templates/js/translated/stock.js:2905 +#: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "" @@ -4838,11 +4874,11 @@ msgstr "" msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -5029,9 +5065,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2274 +#: templates/js/translated/stock.js:2310 msgid "Purchase Price" msgstr "" @@ -5084,8 +5120,8 @@ msgstr "" msgid "User who checked this shipment" msgstr "" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "" @@ -5133,7 +5169,7 @@ msgstr "" msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "" @@ -5207,159 +5243,159 @@ msgstr "" msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:610 +#: order/serializers.py:632 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1677 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "" @@ -5733,7 +5769,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" @@ -5763,12 +5799,12 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3917 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3918 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5780,12 +5816,12 @@ msgstr "" #: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 -#: templates/js/translated/stock.js:1999 +#: templates/js/translated/stock.js:2035 msgid "IPN" msgstr "" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" @@ -5861,17 +5897,17 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: part/templates/part/cat_link.html:3 part/templates/part/category.html:23 +#: part/templates/part/category.html:141 part/templates/part/category.html:161 #: part/templates/part/category_sidebar.html:9 #: templates/InvenTree/index.html:36 templates/InvenTree/search.html:84 #: templates/InvenTree/settings/sidebar.html:47 #: templates/js/translated/part.js:2804 templates/js/translated/search.js:130 #: templates/navbar.html:24 users/models.py:190 msgid "Parts" -msgstr "" +msgstr "ชิ้นส่วน" #: part/admin.py:384 msgid "BOM Level" @@ -5885,17 +5921,17 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3919 msgid "Part IPN" msgstr "" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5973,8 +6009,8 @@ msgstr "" msgid "This option must be selected" msgstr "" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3862 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5982,12 +6018,17 @@ msgstr "" msgid "Category" msgstr "" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5995,7 +6036,7 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3863 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -6010,7 +6051,8 @@ msgstr "" msgid "Default location for parts in this category" msgstr "" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 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" @@ -6076,7 +6118,7 @@ msgstr "" msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3918 msgid "Part name" msgstr "" @@ -6358,7 +6400,7 @@ msgstr "" #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1732 -#: templates/js/translated/stock.js:2785 +#: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" @@ -6410,586 +6452,602 @@ msgstr "" msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3448 -msgid "Test with this name already exists for this part" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "" -#: part/models.py:3496 +#: part/models.py:3505 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "" -#: part/models.py:3503 +#: part/models.py:3512 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3870 part/models.py:3871 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3877 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3847 +#: part/models.py:3878 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3885 +#: part/models.py:3916 msgid "Part ID or part name" msgstr "" -#: part/models.py:3886 +#: part/models.py:3917 msgid "Unique part ID value" msgstr "" -#: part/models.py:3888 +#: part/models.py:3919 msgid "Part IPN value" msgstr "" -#: part/models.py:3889 +#: part/models.py:3920 msgid "Level" msgstr "" -#: part/models.py:3889 +#: part/models.py:3920 msgid "BOM level" msgstr "" -#: part/models.py:3979 +#: part/models.py:4010 msgid "Select parent part" msgstr "" -#: part/models.py:3989 +#: part/models.py:4020 msgid "Sub part" msgstr "" -#: part/models.py:3990 +#: part/models.py:4021 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4001 +#: part/models.py:4032 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4007 +#: part/models.py:4038 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4013 +#: part/models.py:4044 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4051 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4021 +#: part/models.py:4052 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4028 +#: part/models.py:4059 msgid "BOM item reference" msgstr "" -#: part/models.py:4036 +#: part/models.py:4067 msgid "BOM item notes" msgstr "" -#: part/models.py:4042 +#: part/models.py:4073 msgid "Checksum" msgstr "" -#: part/models.py:4043 +#: part/models.py:4074 msgid "BOM line checksum" msgstr "" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4079 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4049 +#: part/models.py:4080 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4085 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:4055 +#: part/models.py:4086 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4091 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4061 +#: part/models.py:4092 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4146 stock/models.py:649 +#: part/models.py:4177 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4187 part/models.py:4189 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4298 +#: part/models.py:4329 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4319 +#: part/models.py:4350 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4332 +#: part/models.py:4363 msgid "Parent BOM item" msgstr "" -#: part/models.py:4340 +#: part/models.py:4371 msgid "Substitute part" msgstr "" -#: part/models.py:4356 +#: part/models.py:4387 msgid "Part 1" msgstr "" -#: part/models.py:4364 +#: part/models.py:4395 msgid "Part 2" msgstr "" -#: part/models.py:4365 +#: part/models.py:4396 msgid "Select Related Part" msgstr "" -#: part/models.py:4384 +#: part/models.py:4415 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4389 +#: part/models.py:4420 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:432 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:480 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1104 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1078 +#: part/serializers.py:1114 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1088 +#: part/serializers.py:1124 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1647 +#: part/serializers.py:1693 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1659 +#: part/serializers.py:1705 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1694 +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "" @@ -7147,7 +7205,7 @@ msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/stock.js:2179 users/models.py:191 +#: templates/js/translated/stock.js:2215 users/models.py:191 msgid "Stocktake" msgstr "" @@ -7221,7 +7279,7 @@ msgid "Validate BOM" msgstr "" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "" @@ -7405,7 +7463,7 @@ msgstr "" msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "" @@ -7509,7 +7567,7 @@ msgstr "" #: templates/InvenTree/settings/sidebar.html:51 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 -#: templates/js/translated/stock.js:2033 templates/navbar.html:31 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 msgid "Stock" msgstr "" @@ -7555,7 +7613,7 @@ msgstr "" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 -#: templates/js/translated/stock.js:2209 +#: templates/js/translated/stock.js:2245 msgid "Last Updated" msgstr "" @@ -7999,7 +8057,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "" @@ -8170,7 +8228,7 @@ msgstr "" msgid "Method" msgstr "" -#: plugin/plugin.py:264 +#: plugin/plugin.py:270 msgid "No author found" msgstr "" @@ -8307,16 +8365,16 @@ msgstr "" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "" @@ -8336,103 +8394,111 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" msgstr "" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" msgstr "" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8499,12 +8565,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1492 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Result" msgstr "" @@ -8531,7 +8597,7 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:168 #: stock/admin.py:162 templates/js/translated/stock.js:700 -#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110 msgid "Serial" msgstr "" @@ -8615,7 +8681,7 @@ msgstr "" #: stock/admin.py:256 stock/models.py:886 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2193 users/models.py:113 +#: templates/js/translated/stock.js:2229 users/models.py:113 msgid "Expiry Date" msgstr "" @@ -8713,7 +8779,7 @@ msgstr "" msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:174 templates/js/translated/stock.js:2745 +#: stock/models.py:174 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" @@ -8722,7 +8788,7 @@ msgstr "" msgid "This is an external stock location" msgstr "" -#: stock/models.py:181 templates/js/translated/stock.js:2754 +#: stock/models.py:181 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" @@ -8739,7 +8805,7 @@ msgstr "" msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:290 msgid "Stock item cannot be created for virtual parts" msgstr "" @@ -8784,7 +8850,7 @@ msgstr "" msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1351 msgid "Packaging this stock item is stored in" msgstr "" @@ -8796,7 +8862,7 @@ msgstr "" msgid "Serial number for this item" msgstr "" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1334 msgid "Batch code for this stock item" msgstr "" @@ -8873,7 +8939,7 @@ msgstr "" msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:529 msgid "Serial numbers already exist" msgstr "" @@ -8905,7 +8971,7 @@ msgstr "" msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1240 msgid "Duplicate stock items" msgstr "" @@ -8929,207 +8995,236 @@ msgstr "" msgid "Entry notes" msgstr "" -#: stock/models.py:2399 +#: stock/models.py:2402 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2405 +#: stock/models.py:2408 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Test result" msgstr "" -#: stock/models.py:2439 +#: stock/models.py:2442 msgid "Test output value" msgstr "" -#: stock/models.py:2447 +#: stock/models.py:2450 msgid "Test result attachment" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2454 msgid "Test notes" msgstr "" -#: stock/serializers.py:96 +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "" + +#: stock/models.py:2463 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2469 +msgid "Started" +msgstr "" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:100 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:119 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 +#: stock/serializers.py:151 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:184 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:267 +#: stock/serializers.py:282 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:380 +#: stock/serializers.py:402 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:442 +#: stock/serializers.py:464 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:455 +#: stock/serializers.py:477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:462 +#: stock/serializers.py:484 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:480 +#: stock/serializers.py:502 msgid "Optional note field" msgstr "" -#: stock/serializers.py:490 +#: stock/serializers.py:512 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:545 +#: stock/serializers.py:567 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:574 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:553 +#: stock/serializers.py:575 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:566 +#: stock/serializers.py:588 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:596 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:581 +#: stock/serializers.py:607 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:620 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:628 +#: stock/serializers.py:655 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:663 +#: stock/serializers.py:690 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:676 +#: stock/serializers.py:703 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:693 +#: stock/serializers.py:720 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:724 +#: stock/serializers.py:751 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:761 +#: stock/serializers.py:788 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:767 +#: stock/serializers.py:794 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1036 +#: stock/serializers.py:1069 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1040 +#: stock/serializers.py:1073 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1044 +#: stock/serializers.py:1077 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1068 +#: stock/serializers.py:1101 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1074 +#: stock/serializers.py:1107 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1082 +#: stock/serializers.py:1115 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1125 stock/serializers.py:1379 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1171 +#: stock/serializers.py:1204 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1176 +#: stock/serializers.py:1209 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1177 +#: stock/serializers.py:1210 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1182 +#: stock/serializers.py:1215 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1183 +#: stock/serializers.py:1216 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1193 +#: stock/serializers.py:1226 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1260 +#: stock/serializers.py:1293 msgid "No Change" msgstr "" -#: stock/serializers.py:1289 +#: stock/serializers.py:1322 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1308 +#: stock/serializers.py:1341 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1336 +#: stock/serializers.py:1369 msgid "Stock transaction notes" msgstr "" @@ -9154,7 +9249,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 msgid "Delete Test Data" msgstr "" @@ -9170,15 +9265,15 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:274 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 msgid "Add Test Result" msgstr "" @@ -9201,17 +9296,17 @@ msgid "Stock adjustment actions" msgstr "" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 msgid "Count stock" msgstr "" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:1803 msgid "Add stock" msgstr "" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1776 +#: templates/js/translated/stock.js:1812 msgid "Remove stock" msgstr "" @@ -9220,12 +9315,12 @@ msgid "Serialize stock" msgstr "" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 msgid "Transfer stock" msgstr "" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1884 msgid "Assign to customer" msgstr "" @@ -9364,7 +9459,7 @@ msgid "No stocktake performed" msgstr "" #: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1915 +#: templates/js/translated/stock.js:1951 msgid "stock item" msgstr "" @@ -9469,7 +9564,7 @@ msgid "New Location" msgstr "" #: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2536 +#: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" @@ -10063,7 +10158,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:37 msgid "New Location Type" msgstr "" @@ -10120,7 +10215,7 @@ msgstr "" msgid "Stock Settings" msgstr "" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:33 msgid "Stock Location Types" msgstr "" @@ -10662,7 +10757,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "" @@ -10676,7 +10771,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "" @@ -11051,62 +11146,66 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "" @@ -11389,7 +11488,7 @@ msgstr "" #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 -#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11401,7 +11500,7 @@ msgstr "" msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006 +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" @@ -11449,29 +11548,29 @@ msgstr "" msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "" @@ -11804,15 +11903,15 @@ msgstr "" msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3087 +#: templates/js/translated/forms.js:3103 msgid "Select Columns" msgstr "" @@ -12289,7 +12388,7 @@ msgid "No category" msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 -#: templates/js/translated/stock.js:2633 +#: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" @@ -12301,7 +12400,7 @@ msgstr "" msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" @@ -12313,64 +12412,64 @@ msgstr "" msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" @@ -12907,7 +13006,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1737 +#: templates/js/translated/stock.js:1773 msgid "Shipped to customer" msgstr "" @@ -13165,7 +13264,7 @@ msgstr "" msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" @@ -13189,248 +13288,256 @@ msgstr "" msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1440 +#: templates/js/translated/stock.js:1447 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1443 +#: templates/js/translated/stock.js:1450 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1466 +#: templates/js/translated/stock.js:1473 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1530 +#: templates/js/translated/stock.js:1537 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1677 +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1733 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1729 +#: templates/js/translated/stock.js:1765 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1769 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1741 +#: templates/js/translated/stock.js:1777 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1747 +#: templates/js/translated/stock.js:1783 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1839 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1848 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:1897 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1916 +#: templates/js/translated/stock.js:1952 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1921 +#: templates/js/translated/stock.js:1957 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1932 +#: templates/js/translated/stock.js:1968 msgid "Stock Actions" msgstr "" -#: templates/js/translated/stock.js:1976 +#: templates/js/translated/stock.js:2012 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2054 +#: templates/js/translated/stock.js:2090 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2059 +#: templates/js/translated/stock.js:2095 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2062 +#: templates/js/translated/stock.js:2098 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2065 +#: templates/js/translated/stock.js:2101 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2067 +#: templates/js/translated/stock.js:2103 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2069 +#: templates/js/translated/stock.js:2105 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2072 +#: templates/js/translated/stock.js:2108 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2074 +#: templates/js/translated/stock.js:2110 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2114 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2080 +#: templates/js/translated/stock.js:2116 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2085 +#: templates/js/translated/stock.js:2121 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2087 +#: templates/js/translated/stock.js:2123 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2089 +#: templates/js/translated/stock.js:2125 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2129 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2258 +#: templates/js/translated/stock.js:2294 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2305 +#: templates/js/translated/stock.js:2341 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2433 +#: templates/js/translated/stock.js:2469 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2573 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2692 +#: templates/js/translated/stock.js:2728 msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2810 +#: templates/js/translated/stock.js:2846 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2814 +#: templates/js/translated/stock.js:2850 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:2862 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2848 +#: templates/js/translated/stock.js:2884 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2865 +#: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2880 +#: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2897 +#: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2914 +#: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3005 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2977 +#: templates/js/translated/stock.js:3013 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:3049 +#: templates/js/translated/stock.js:3085 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139 +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:3161 +#: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:3182 +#: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:3183 +#: 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:3185 +#: 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:3186 +#: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:3187 +#: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:3188 +#: 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:3201 +#: templates/js/translated/stock.js:3237 msgid "Select part to install" msgstr "" -#: templates/js/translated/stock.js:3264 +#: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" msgstr "" -#: templates/js/translated/stock.js:3277 +#: templates/js/translated/stock.js:3313 msgid "Selected stock items" msgstr "" -#: templates/js/translated/stock.js:3281 +#: templates/js/translated/stock.js:3317 msgid "Change Stock Status" msgstr "" diff --git a/InvenTree/locale/tr/LC_MESSAGES/django.po b/InvenTree/locale/tr/LC_MESSAGES/django.po index e2eb65ff87..6661bd214f 100644 --- a/InvenTree/locale/tr/LC_MESSAGES/django.po +++ b/InvenTree/locale/tr/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 04:05+0000\n" -"PO-Revision-Date: 2024-02-28 07:23\n" +"POT-Creation-Date: 2024-03-19 01:26+0000\n" +"PO-Revision-Date: 2024-03-19 11:52\n" "Last-Translator: \n" "Language-Team: Turkish\n" "Language: tr_TR\n" @@ -28,22 +28,22 @@ msgstr "Kullanıcının bu modeli görüntüleme izni yok" #: InvenTree/conversion.py:160 #, python-brace-format msgid "Invalid unit provided ({unit})" -msgstr "" +msgstr "Geçersiz ürün girildi ({unit})" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "Değer verilmemiş" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "{original} birimi {unit} birimine dönüştürülemedi" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" msgstr "Geçersiz miktar sağlandı" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" msgstr "Geçersiz miktar sağlandı({exc})" @@ -64,18 +64,18 @@ msgstr "Tarih giriniz" #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 #: templates/js/translated/return_order.js:776 #: templates/js/translated/sales_order.js:1067 #: templates/js/translated/sales_order.js:1982 -#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 msgid "Notes" msgstr "Notlar" @@ -132,42 +132,42 @@ msgstr "Sağlanan e-posta alanı onaylanmadı." msgid "Registration is disabled." msgstr "Kayıt devre dışı." -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "Geçersiz veri sağlandı" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "Boş seri numarası dizesi" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "Yinelenen seri" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "Geçersiz grup aralığı: {group}" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "Grup aralığı {group}, izin verilen miktarı aşmaktadır ({expected_quantity})" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "Geçersiz grup aralığı: {group}" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "Seri numarası bulunamadı" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "Benzersiz seri numaralarının sayısı ({len(serials)}) ile miktarın ({expected_quantity}) eşleşmesi gerekmektedir" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "Bu değerden HTML etiketlerini kaldır" @@ -203,131 +203,135 @@ msgstr "Uzak sunucu boş cevap döndü" msgid "Supplied URL is not a valid image file" msgstr "Sağlanan URL geçerli bir resim dosyası değil" -#: InvenTree/locales.py:16 +#: InvenTree/locales.py:18 msgid "Bulgarian" msgstr "Bulgarca" -#: InvenTree/locales.py:17 +#: InvenTree/locales.py:19 msgid "Czech" msgstr "Çekçe" -#: InvenTree/locales.py:18 +#: InvenTree/locales.py:20 msgid "Danish" msgstr "Danca" -#: InvenTree/locales.py:19 +#: InvenTree/locales.py:21 msgid "German" msgstr "Almanca" -#: InvenTree/locales.py:20 +#: InvenTree/locales.py:22 msgid "Greek" msgstr "Yunanca" -#: InvenTree/locales.py:21 +#: InvenTree/locales.py:23 msgid "English" msgstr "İngilizce" -#: InvenTree/locales.py:22 +#: InvenTree/locales.py:24 msgid "Spanish" msgstr "İspanyolca" -#: InvenTree/locales.py:23 +#: InvenTree/locales.py:25 msgid "Spanish (Mexican)" msgstr "İspanyolca(Meksika)" -#: InvenTree/locales.py:24 +#: InvenTree/locales.py:26 msgid "Farsi / Persian" msgstr "Farsça" -#: InvenTree/locales.py:25 +#: InvenTree/locales.py:27 msgid "Finnish" msgstr "Fince" -#: InvenTree/locales.py:26 +#: InvenTree/locales.py:28 msgid "French" msgstr "Fransızca" -#: InvenTree/locales.py:27 +#: InvenTree/locales.py:29 msgid "Hebrew" msgstr "İbranice" -#: InvenTree/locales.py:28 +#: InvenTree/locales.py:30 msgid "Hindi" msgstr "Hintçe" -#: InvenTree/locales.py:29 +#: InvenTree/locales.py:31 msgid "Hungarian" msgstr "Macarca" -#: InvenTree/locales.py:30 +#: InvenTree/locales.py:32 msgid "Italian" msgstr "İtalyanca" -#: InvenTree/locales.py:31 +#: InvenTree/locales.py:33 msgid "Japanese" msgstr "Japonca" -#: InvenTree/locales.py:32 +#: InvenTree/locales.py:34 msgid "Korean" msgstr "Korece" -#: InvenTree/locales.py:33 +#: InvenTree/locales.py:35 +msgid "Latvian" +msgstr "" + +#: InvenTree/locales.py:36 msgid "Dutch" msgstr "Flemenkçe" -#: InvenTree/locales.py:34 +#: InvenTree/locales.py:37 msgid "Norwegian" msgstr "Norveççe" -#: InvenTree/locales.py:35 +#: InvenTree/locales.py:38 msgid "Polish" msgstr "Polonyaca" -#: InvenTree/locales.py:36 +#: InvenTree/locales.py:39 msgid "Portuguese" msgstr "Portekizce" -#: InvenTree/locales.py:37 +#: InvenTree/locales.py:40 msgid "Portuguese (Brazilian)" msgstr "Portekizce (Brezilya)" -#: InvenTree/locales.py:38 +#: InvenTree/locales.py:41 msgid "Russian" msgstr "Rusça" -#: InvenTree/locales.py:39 +#: InvenTree/locales.py:42 msgid "Slovak" msgstr "Slovakça" -#: InvenTree/locales.py:40 +#: InvenTree/locales.py:43 msgid "Slovenian" msgstr "Slovakça" -#: InvenTree/locales.py:41 +#: InvenTree/locales.py:44 msgid "Serbian" msgstr "Sırpça" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:45 msgid "Swedish" msgstr "İsveççe" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:46 msgid "Thai" msgstr "Tay dili" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:47 msgid "Turkish" msgstr "Türkçe" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:48 msgid "Vietnamese" msgstr "Vietnamca" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:49 msgid "Chinese (Simplified)" msgstr "Çince (Basitleştirilmiş)" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:50 msgid "Chinese (Traditional)" msgstr "Çince (Geleneksel)" @@ -345,7 +349,7 @@ msgstr "E-posta" #: InvenTree/models.py:107 msgid "Error running plugin validation" -msgstr "" +msgstr "Eklenti doğrulama sırasında hata oluştu" #: InvenTree/models.py:162 msgid "Metadata must be a python dict object" @@ -377,11 +381,11 @@ msgstr "Referans alanı boş olamaz" #: InvenTree/models.py:431 msgid "Reference must match required pattern" -msgstr "" +msgstr "Referans {pattern} deseniyle mutlaka eşleşmeli" #: InvenTree/models.py:463 msgid "Reference number is too large" -msgstr "" +msgstr "Referans sayısı çok fazla" #: InvenTree/models.py:537 msgid "Missing file" @@ -391,7 +395,7 @@ msgstr "Eksik dosya" msgid "Missing external link" msgstr "Bozuk dış bağlantı" -#: InvenTree/models.py:559 stock/models.py:2446 +#: InvenTree/models.py:559 stock/models.py:2449 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -401,7 +405,7 @@ msgstr "Ek" msgid "Select file to attach" msgstr "Eklenecek dosyayı seç" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -432,13 +436,13 @@ msgstr "Yorum" msgid "File comment" msgstr "Dosya yorumu" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:3000 users/models.py:100 +#: templates/js/translated/stock.js:3036 users/models.py:100 msgid "User" msgstr "Kullanıcı" @@ -473,16 +477,16 @@ msgstr "Dosya adı değiştirilirken hata" #: InvenTree/models.py:847 msgid "Duplicate names cannot exist under the same parent" -msgstr "" +msgstr "Aynı kaynak altında birden fazla aynı isim kullanılamaz" #: InvenTree/models.py:864 msgid "Invalid choice" msgstr "Geçersiz seçim" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -495,7 +499,7 @@ msgstr "Geçersiz seçim" #: templates/js/translated/company.js:1155 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Adı" @@ -506,10 +510,10 @@ msgstr "Adı" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -523,7 +527,7 @@ msgstr "Adı" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -531,8 +535,8 @@ msgstr "Adı" #: templates/js/translated/return_order.js:314 #: templates/js/translated/sales_order.js:802 #: templates/js/translated/sales_order.js:1812 -#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021 -#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "Açıklama" @@ -545,13 +549,13 @@ msgid "parent" msgstr "üst" #: InvenTree/models.py:916 templates/js/translated/part.js:2794 -#: templates/js/translated/stock.js:2721 +#: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Yol" #: InvenTree/models.py:1022 msgid "Markdown notes (optional)" -msgstr "" +msgstr "Markdown notları (isteğe bağlı)" #: InvenTree/models.py:1051 msgid "Barcode Data" @@ -567,11 +571,11 @@ msgstr "Barkod Hash" #: InvenTree/models.py:1059 msgid "Unique hash of barcode data" -msgstr "" +msgstr "Barkod verisinin benzersiz hash'i" #: InvenTree/models.py:1112 msgid "Existing barcode found" -msgstr "" +msgstr "Var olan barkod bulundu" #: InvenTree/models.py:1155 msgid "Server Error" @@ -579,9 +583,9 @@ msgstr "Sunucu Hatası" #: InvenTree/models.py:1156 msgid "An error has been logged by the server." -msgstr "" +msgstr "Bir hafta sunucu tarafından kayıt edildi." -#: InvenTree/serializers.py:62 part/models.py:4134 +#: InvenTree/serializers.py:62 part/models.py:4143 msgid "Must be a valid number" msgstr "Geçerli bir numara olmalı" @@ -594,91 +598,91 @@ msgstr "Para birimi" #: InvenTree/serializers.py:102 msgid "Select currency from available options" -msgstr "" +msgstr "Var olan seçeneklerden bir döviz birimi seçin" -#: InvenTree/serializers.py:436 +#: InvenTree/serializers.py:441 msgid "You do not have permission to change this user role." -msgstr "" +msgstr "Bu kullanıcı rolünü değiştirmek için izniniz yok." -#: InvenTree/serializers.py:448 +#: InvenTree/serializers.py:453 msgid "Only superusers can create new users" -msgstr "" +msgstr "Sadece süper kullanıcılar yeni kullanıcı oluşturabilir" -#: InvenTree/serializers.py:467 +#: InvenTree/serializers.py:472 msgid "Your account has been created." -msgstr "" +msgstr "Kullanıcı hesabınız oluşturulmuştur." -#: InvenTree/serializers.py:469 +#: InvenTree/serializers.py:474 msgid "Please use the password reset function to login" -msgstr "" +msgstr "Giriş yapmak için lütfen şifre sıfırlama fonksiyonunu kullanınız" -#: InvenTree/serializers.py:476 +#: InvenTree/serializers.py:481 msgid "Welcome to InvenTree" -msgstr "" +msgstr "InvenTree'ye Hoşgeldiniz" -#: InvenTree/serializers.py:537 +#: InvenTree/serializers.py:542 msgid "Filename" msgstr "Dosya adı" -#: InvenTree/serializers.py:571 +#: InvenTree/serializers.py:576 msgid "Invalid value" msgstr "Geçersiz değer" -#: InvenTree/serializers.py:591 +#: InvenTree/serializers.py:596 msgid "Data File" msgstr "Veri Dosyası" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:597 msgid "Select data file for upload" msgstr "Yüklemek istediğiniz dosyayı seçin" -#: InvenTree/serializers.py:609 +#: InvenTree/serializers.py:614 msgid "Unsupported file type" msgstr "Desteklenmeyen dsoya tipi" -#: InvenTree/serializers.py:615 +#: InvenTree/serializers.py:620 msgid "File is too large" msgstr "Dosya boyutu çok büyük" -#: InvenTree/serializers.py:636 +#: InvenTree/serializers.py:641 msgid "No columns found in file" msgstr "Dosyada kolon bulunamadı" -#: InvenTree/serializers.py:639 +#: InvenTree/serializers.py:644 msgid "No data rows found in file" msgstr "Dosyada satır bulunamadı" -#: InvenTree/serializers.py:752 +#: InvenTree/serializers.py:757 msgid "No data rows provided" msgstr "Dosyada satır bulunamadı" -#: InvenTree/serializers.py:755 +#: InvenTree/serializers.py:760 msgid "No data columns supplied" msgstr "Dosyada uygun kolon bulunamadı" -#: InvenTree/serializers.py:822 +#: InvenTree/serializers.py:827 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Gerekli kolon ismi eksik:'{name}'" -#: InvenTree/serializers.py:831 +#: InvenTree/serializers.py:836 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Tekrarlanan kolon ismi:'{col}'" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:859 msgid "Remote Image" -msgstr "" +msgstr "Uzaktan Görüntüler" -#: InvenTree/serializers.py:855 +#: InvenTree/serializers.py:860 msgid "URL of remote image file" -msgstr "" +msgstr "Uzaktan görüntü dosya URL'si" -#: InvenTree/serializers.py:873 +#: InvenTree/serializers.py:878 msgid "Downloading images from remote URL is not enabled" msgstr "" -#: InvenTree/status.py:66 part/serializers.py:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "Arka plan çalışanı kontrolü başarısız oldu" @@ -818,7 +822,7 @@ msgstr "Üst ögeden ayır" msgid "Split child item" msgstr "Alt ögeyi ayır" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 msgid "Merged stock items" msgstr "Stok parçalarını birleştir" @@ -838,7 +842,7 @@ msgstr "Yapım emri çıktısı tamamlandı" msgid "Build order output rejected" msgstr "" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 msgid "Consumed by build order" msgstr "" @@ -938,14 +942,14 @@ msgstr "InvenTree Hakkında" msgid "Build must be cancelled before it can be deleted" msgstr "" -#: build/api.py:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -960,7 +964,7 @@ msgid "Tracked" msgstr "" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -985,7 +989,7 @@ msgstr "Mevcut" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "Yapım İşi Emri" @@ -1014,7 +1018,7 @@ msgstr "Yapım İşi Emri Referansı" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1044,11 +1048,11 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri" #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1059,7 +1063,7 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:267 stock/serializers.py:689 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1086,9 +1090,9 @@ msgstr "Bu yapım işinin tahsis edildiği yapım işi emri" #: templates/js/translated/sales_order.js:1598 #: templates/js/translated/sales_order.js:1796 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960 -#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054 -#: templates/js/translated/stock.js:3200 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 msgid "Part" msgstr "Parça" @@ -1146,8 +1150,8 @@ msgstr "Yapım İşi Durumu" msgid "Build status code" msgstr "Yapım işi durum kodu" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Sıra numarası" @@ -1242,53 +1246,53 @@ msgstr "" msgid "Project code for this build order" msgstr "" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" msgstr "" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "Yapım işi çıktısı belirtilmedi" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "Yapım işi çıktısı zaten tamamlanmış" -#: build/models.py:789 +#: build/models.py:805 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:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 msgid "Quantity must be greater than zero" msgstr "" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 msgid "Quantity cannot be greater than the output quantity" msgstr "" -#: build/models.py:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" msgstr "" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1298,7 +1302,7 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:463 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1310,7 +1314,7 @@ msgstr "" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1325,43 +1329,43 @@ msgstr "" #: templates/js/translated/sales_order.js:1698 #: templates/js/translated/sales_order.js:1824 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 -#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985 -#: templates/js/translated/stock.js:3068 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "Miktar" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" msgstr "" -#: build/models.py:1381 +#: build/models.py:1397 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:1390 +#: build/models.py:1406 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "" -#: build/models.py:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "Stok kalemi fazladan tahsis edilmiş" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "Tahsis edilen miktar sıfırdan büyük olmalıdır" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "Seri numaralı stok için miktar bir olmalı" -#: build/models.py:1473 +#: build/models.py:1489 msgid "Selected stock item does not match BOM line" msgstr "" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 @@ -1372,23 +1376,23 @@ msgstr "" #: templates/js/translated/sales_order.js:1605 #: templates/js/translated/sales_order.js:1692 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 -#: templates/js/translated/stock.js:2941 +#: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "Stok Kalemi" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "Kaynak stok kalemi" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "Yapım işi için tahsis edilen stok miktarı" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "Kurulduğu yer" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "Hedef stok kalemi" @@ -1425,8 +1429,8 @@ msgstr "" msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "" -#: build/serializers.py:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 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ı" @@ -1451,10 +1455,10 @@ msgstr "" msgid "A list of build outputs must be provided" msgstr "" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1466,8 +1470,8 @@ msgstr "" #: templates/js/translated/sales_order.js:1627 #: templates/js/translated/sales_order.js:1706 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164 -#: templates/js/translated/stock.js:2835 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 msgid "Location" msgstr "Konum" @@ -1493,16 +1497,16 @@ msgstr "" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 #: templates/js/translated/purchase_order.js:1723 #: templates/js/translated/return_order.js:331 #: templates/js/translated/sales_order.js:819 -#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959 -#: templates/js/translated/stock.js:3084 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 msgid "Status" msgstr "Durum" @@ -1566,7 +1570,7 @@ msgstr "" msgid "Required stock has not been fully allocated" msgstr "Gerekli stok tamamen tahsis edilemedi" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "" @@ -1602,11 +1606,11 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1065 msgid "Item must be in stock" msgstr "" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" @@ -1619,7 +1623,7 @@ msgstr "" msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "" @@ -1659,44 +1663,45 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 #: stock/api.py:745 msgid "BOM Item" msgstr "" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1862,7 +1867,7 @@ msgstr "" #: templates/js/translated/pricing.js:929 #: templates/js/translated/sales_order.js:769 #: templates/js/translated/sales_order.js:992 -#: templates/js/translated/stock.js:2888 +#: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "Sipariş Emri" @@ -1920,8 +1925,8 @@ msgstr "" #: templates/js/translated/build.js:1377 #: templates/js/translated/model_renderers.js:235 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153 -#: templates/js/translated/stock.js:3091 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" @@ -1990,27 +1995,31 @@ msgstr "Gerekli parçaları sipariş edin" msgid "Order Parts" msgstr "Parça Siparişi" -#: build/templates/build/detail.html:210 +#: 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 "Tamamlanmamış Yapım İşi Çıktıları" -#: build/templates/build/detail.html:214 +#: build/templates/build/detail.html:219 msgid "Create new build output" msgstr "Yeni yapım işi çıktısı oluştur" -#: build/templates/build/detail.html:215 +#: build/templates/build/detail.html:220 msgid "New Build Output" msgstr "" -#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "Tamamlanmış Yapım İşi Çıktıları" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2026,15 +2035,15 @@ msgstr "Tamamlanmış Yapım İşi Çıktıları" msgid "Attachments" msgstr "Ekler" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "Yapım İşi Notları" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" msgstr "" @@ -2112,1390 +2121,1414 @@ msgstr "" msgid "User or group responsible for this project" msgstr "" -#: common/models.py:737 +#: common/models.py:744 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:741 +#: common/models.py:748 msgid "Settings value" msgstr "" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "Anahtar dizesi benzersiz olmalı" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "" -#: common/models.py:1231 +#: common/models.py:1238 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "Şirket adı" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "Ana URL" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "Varsayılan Para Birimi" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1283 +#: common/models.py:1290 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "günler" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "URL'den indir" -#: common/models.py:1298 +#: common/models.py:1305 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:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "" -#: common/models.py:1305 +#: common/models.py:1312 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "" -#: common/models.py:1332 +#: common/models.py:1339 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "" -#: common/models.py:1339 +#: common/models.py:1346 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "" -#: common/models.py:1346 +#: common/models.py:1353 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1352 +#: common/models.py:1359 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1360 +#: common/models.py:1367 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1369 +#: common/models.py:1376 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1378 +#: common/models.py:1385 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Barkod Desteği" -#: common/models.py:1386 +#: common/models.py:1393 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1399 +#: common/models.py:1406 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "DPN Regex" -#: common/models.py:1411 +#: common/models.py:1418 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:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "Yinelenen DPN'ye İzin Ver" -#: common/models.py:1415 +#: common/models.py:1422 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:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "DPN Düzenlemeye İzin Ver" -#: common/models.py:1421 +#: common/models.py:1428 msgid "Allow changing the IPN value while editing a part" msgstr "Parçayı düzenlerken DPN değiştirmeye izin ver" -#: common/models.py:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1427 +#: common/models.py:1434 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1433 +#: common/models.py:1440 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1439 +#: common/models.py:1446 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "Kategori Paremetre Sablonu Kopyala" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Copy category parameter templates when creating a part" msgstr "Parça oluştururken kategori parametre şablonlarını kopyala" -#: common/models.py:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "Şablon" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "Parçaları varsayılan olan şablondur" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 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:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "Bileşen" -#: common/models.py:1463 +#: common/models.py:1470 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:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "Satın Alınabilir" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "Parçalar varsayılan olarak satın alınabilir" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "Satılabilir" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "Parçalar varsayılan olarak satılabilir" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "Parçalar varsayılan olarak takip edilebilir" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "Parçalar varsayılan olarak sanaldır" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "İlgili parçaları göster" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1505 +#: common/models.py:1512 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1512 +#: common/models.py:1519 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "" -#: common/models.py:1525 +#: common/models.py:1532 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1526 +#: common/models.py:1533 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1530 +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1532 +#: common/models.py:1539 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1540 +#: common/models.py:1547 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1548 +#: common/models.py:1555 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1564 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1580 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1588 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1595 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1603 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1611 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1618 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1632 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "Hata Ayıklama Modu" -#: common/models.py:1645 +#: 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:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: 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:202 msgid "Page Size" msgstr "Sayfa Boyutu" -#: common/models.py:1651 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "PDF raporlar için varsayılan sayfa boyutu" -#: common/models.py:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1657 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1664 +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1671 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1677 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1692 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1704 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1711 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1719 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1725 +#: 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:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1731 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1736 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1741 +#: 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 "Build Order Reference Pattern" msgstr "" -#: common/models.py:1743 +#: common/models.py:1764 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1757 +#: common/models.py:1778 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1765 +#: common/models.py:1786 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1773 +#: common/models.py:1794 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1780 +#: common/models.py:1801 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1787 +#: common/models.py:1808 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1795 +#: common/models.py:1816 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1803 +#: common/models.py:1824 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1811 +#: common/models.py:1832 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "" -#: common/models.py:1825 +#: common/models.py:1846 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1838 +#: common/models.py:1859 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1844 +#: common/models.py:1865 msgid "Email required" msgstr "" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1852 +#: common/models.py:1873 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "" -#: common/models.py:1859 +#: common/models.py:1880 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "" -#: common/models.py:1865 +#: common/models.py:1886 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "" -#: common/models.py:1879 +#: common/models.py:1900 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1892 +#: common/models.py:1913 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1929 +#: common/models.py:1950 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "" -#: common/models.py:1936 +#: common/models.py:1957 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1950 +#: common/models.py:1971 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1958 +#: common/models.py:1979 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1966 +#: common/models.py:1987 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1974 +#: common/models.py:1995 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2029 common/models.py:2429 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2043 +#: common/models.py:2070 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2045 +#: common/models.py:2072 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2051 +#: common/models.py:2078 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2052 +#: common/models.py:2079 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2057 +#: common/models.py:2084 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2058 +#: common/models.py:2085 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2063 +#: common/models.py:2090 msgid "Show latest parts" msgstr "" -#: common/models.py:2064 +#: common/models.py:2091 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2069 +#: common/models.py:2096 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2070 +#: common/models.py:2097 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2075 +#: common/models.py:2102 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2076 +#: common/models.py:2103 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2081 +#: common/models.py:2108 msgid "Show low stock" msgstr "" -#: common/models.py:2082 +#: common/models.py:2109 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2087 +#: common/models.py:2114 msgid "Show depleted stock" msgstr "" -#: common/models.py:2088 +#: common/models.py:2115 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2093 +#: common/models.py:2120 msgid "Show needed stock" msgstr "" -#: common/models.py:2094 +#: common/models.py:2121 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2099 +#: common/models.py:2126 msgid "Show expired stock" msgstr "" -#: common/models.py:2100 +#: common/models.py:2127 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2105 +#: common/models.py:2132 msgid "Show stale stock" msgstr "" -#: common/models.py:2106 +#: common/models.py:2133 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2111 +#: common/models.py:2138 msgid "Show pending builds" msgstr "" -#: common/models.py:2112 +#: common/models.py:2139 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2117 +#: common/models.py:2144 msgid "Show overdue builds" msgstr "" -#: common/models.py:2118 +#: common/models.py:2145 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2123 +#: common/models.py:2150 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2124 +#: common/models.py:2151 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2129 +#: common/models.py:2156 msgid "Show overdue POs" msgstr "" -#: common/models.py:2130 +#: common/models.py:2157 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2135 +#: common/models.py:2162 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2136 +#: common/models.py:2163 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2141 +#: common/models.py:2168 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2142 +#: common/models.py:2169 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2147 +#: common/models.py:2174 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2148 +#: common/models.py:2175 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2153 +#: common/models.py:2180 msgid "Show News" msgstr "" -#: common/models.py:2154 +#: common/models.py:2181 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2159 +#: common/models.py:2186 msgid "Inline label display" msgstr "" -#: common/models.py:2161 +#: common/models.py:2188 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2167 +#: common/models.py:2194 msgid "Default label printer" msgstr "" -#: common/models.py:2169 +#: common/models.py:2196 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2175 +#: common/models.py:2202 msgid "Inline report display" msgstr "" -#: common/models.py:2177 +#: common/models.py:2204 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2183 +#: common/models.py:2210 msgid "Search Parts" msgstr "" -#: common/models.py:2184 +#: common/models.py:2211 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2189 +#: common/models.py:2216 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2190 +#: common/models.py:2217 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2195 +#: common/models.py:2222 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2196 +#: common/models.py:2223 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2201 +#: common/models.py:2228 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2202 +#: common/models.py:2229 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2207 +#: common/models.py:2234 msgid "Search Categories" msgstr "" -#: common/models.py:2208 +#: common/models.py:2235 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2213 +#: common/models.py:2240 msgid "Search Stock" msgstr "" -#: common/models.py:2214 +#: common/models.py:2241 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2219 +#: common/models.py:2246 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2221 +#: common/models.py:2248 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2227 +#: common/models.py:2254 msgid "Search Locations" msgstr "" -#: common/models.py:2228 +#: common/models.py:2255 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2233 +#: common/models.py:2260 msgid "Search Companies" msgstr "" -#: common/models.py:2234 +#: common/models.py:2261 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2239 +#: common/models.py:2266 msgid "Search Build Orders" msgstr "" -#: common/models.py:2240 +#: common/models.py:2267 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2245 +#: common/models.py:2272 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2246 +#: common/models.py:2273 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2251 +#: common/models.py:2278 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2253 +#: common/models.py:2280 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2259 +#: common/models.py:2286 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2260 +#: common/models.py:2287 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2265 +#: common/models.py:2292 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2267 +#: common/models.py:2294 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2273 +#: common/models.py:2300 msgid "Search Return Orders" msgstr "" -#: common/models.py:2274 +#: common/models.py:2301 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2279 +#: common/models.py:2306 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2281 +#: common/models.py:2308 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2287 +#: common/models.py:2314 msgid "Search Preview Results" msgstr "" -#: common/models.py:2289 +#: common/models.py:2316 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2295 +#: common/models.py:2322 msgid "Regex Search" msgstr "" -#: common/models.py:2296 +#: common/models.py:2323 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2301 +#: common/models.py:2328 msgid "Whole Word Search" msgstr "" -#: common/models.py:2302 +#: common/models.py:2329 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2307 +#: common/models.py:2334 msgid "Show Quantity in Forms" msgstr "Formlarda Miktarı Göster" -#: common/models.py:2308 +#: common/models.py:2335 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2313 +#: common/models.py:2340 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2314 +#: common/models.py:2341 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2319 +#: common/models.py:2346 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2320 +#: common/models.py:2347 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2325 +#: common/models.py:2352 msgid "Date Format" msgstr "" -#: common/models.py:2326 +#: common/models.py:2353 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2366 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2340 +#: common/models.py:2367 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2372 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2347 +#: common/models.py:2374 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2353 +#: common/models.py:2380 msgid "Table String Length" msgstr "" -#: common/models.py:2355 +#: common/models.py:2382 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2361 +#: common/models.py:2388 msgid "Default part label template" msgstr "" -#: common/models.py:2362 +#: common/models.py:2389 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2367 +#: common/models.py:2394 msgid "Default stock item template" msgstr "" -#: common/models.py:2369 +#: common/models.py:2396 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2375 +#: common/models.py:2402 msgid "Default stock location label template" msgstr "" -#: common/models.py:2377 +#: common/models.py:2404 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2383 +#: common/models.py:2410 msgid "Receive error reports" msgstr "" -#: common/models.py:2384 +#: common/models.py:2411 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2389 +#: common/models.py:2416 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2417 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2460 msgid "Price break quantity" msgstr "" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3503,23 +3536,23 @@ msgstr "" msgid "Price" msgstr "Fiyat" -#: common/models.py:2441 +#: common/models.py:2468 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2639 common/models.py:2824 msgid "Endpoint" msgstr "" -#: common/models.py:2613 +#: common/models.py:2640 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2623 +#: common/models.py:2650 msgid "Name for this webhook" msgstr "" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3529,101 +3562,101 @@ msgstr "" msgid "Active" msgstr "Aktif" -#: common/models.py:2627 +#: common/models.py:2654 msgid "Is this webhook active" msgstr "" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2670 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2644 +#: common/models.py:2671 msgid "Token for access" msgstr "" -#: common/models.py:2652 +#: common/models.py:2679 msgid "Secret" msgstr "" -#: common/models.py:2653 +#: common/models.py:2680 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2761 +#: common/models.py:2788 msgid "Message ID" msgstr "" -#: common/models.py:2762 +#: common/models.py:2789 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2770 +#: common/models.py:2797 msgid "Host" msgstr "" -#: common/models.py:2771 +#: common/models.py:2798 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2779 +#: common/models.py:2806 msgid "Header" msgstr "" -#: common/models.py:2780 +#: common/models.py:2807 msgid "Header of this message" msgstr "" -#: common/models.py:2787 +#: common/models.py:2814 msgid "Body" msgstr "" -#: common/models.py:2788 +#: common/models.py:2815 msgid "Body of this message" msgstr "" -#: common/models.py:2798 +#: common/models.py:2825 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2803 +#: common/models.py:2830 msgid "Worked on" msgstr "" -#: common/models.py:2804 +#: common/models.py:2831 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2930 +#: common/models.py:2957 msgid "Id" msgstr "" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2959 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2963 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2965 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2967 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Read" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Was this news item read?" msgstr "" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2987 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3633,31 +3666,31 @@ msgstr "" msgid "Image" msgstr "Resim" -#: common/models.py:2960 +#: common/models.py:2987 msgid "Image file" msgstr "" -#: common/models.py:3002 +#: common/models.py:3029 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3021 +#: common/models.py:3048 msgid "Unit name" msgstr "" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3029 +#: common/models.py:3056 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3037 +#: common/models.py:3064 msgid "Unit definition" msgstr "" @@ -3961,7 +3994,7 @@ msgid "Link to address information (external)" msgstr "" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Temel Parça" @@ -3972,7 +4005,7 @@ msgstr "Parça seçin" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3987,7 +4020,7 @@ msgid "Select manufacturer" msgstr "Üretici seçin" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4022,9 +4055,9 @@ msgstr "Parametre adı" #: company/models.py:615 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2438 templates/js/translated/company.js:1156 +#: stock/models.py:2441 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1519 msgid "Value" msgstr "Değer" @@ -4033,7 +4066,7 @@ msgid "Parameter value" msgstr "Parametre değeri" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4059,7 +4092,7 @@ msgstr "" #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4076,7 +4109,7 @@ msgstr "Tedarikçi" msgid "Select supplier" msgstr "Tedarikçi seçin" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "" @@ -4093,13 +4126,13 @@ msgid "Supplier part description" msgstr "" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:579 msgid "Note" msgstr "Not" @@ -4112,10 +4145,10 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 -#: templates/js/translated/stock.js:2387 +#: templates/js/translated/stock.js:2423 msgid "Packaging" msgstr "Paketleme" @@ -4157,7 +4190,7 @@ msgstr "" msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "" @@ -4218,13 +4251,13 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1100 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 #: templates/js/translated/return_order.js:296 #: templates/js/translated/sales_order.js:784 -#: templates/js/translated/stock.js:2923 +#: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:804 msgid "Customer" msgstr "Müşteri" @@ -4429,8 +4462,9 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "" @@ -4482,7 +4516,7 @@ msgstr "" #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2243 +#: templates/js/translated/stock.js:2279 msgid "Supplier Part" msgstr "Tedarikçi Parçası" @@ -4528,7 +4562,7 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4577,15 +4611,17 @@ msgstr "" msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 -#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:193 msgid "Stock Items" msgstr "Stok Kalemleri" @@ -4639,8 +4675,8 @@ msgstr "Etiket" msgid "Label template file" msgstr "Etiket şablon listesi" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "Etkin" @@ -4665,7 +4701,7 @@ msgstr "Yükseklik [mm]" msgid "Label height, specified in mm" msgstr "Etiket yüksekliği mm olarak belirtilmeli" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "Dosya Adı Deseni" @@ -4679,8 +4715,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "Filtreler" @@ -4821,7 +4857,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1674 -#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "" @@ -4830,7 +4866,7 @@ msgstr "" #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 -#: templates/js/translated/stock.js:2905 +#: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "" @@ -4838,11 +4874,11 @@ msgstr "" msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -5029,9 +5065,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2274 +#: templates/js/translated/stock.js:2310 msgid "Purchase Price" msgstr "" @@ -5084,8 +5120,8 @@ msgstr "" msgid "User who checked this shipment" msgstr "" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "" @@ -5133,7 +5169,7 @@ msgstr "" msgid "Allocation quantity cannot exceed stock quantity" msgstr "Tahsis miktarı stok miktarını aşamaz" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "Seri numaralı stok kalemi için miktar bir olmalı" @@ -5207,159 +5243,159 @@ msgstr "" msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:610 +#: order/serializers.py:632 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1677 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "" @@ -5733,7 +5769,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "İşlemler" @@ -5763,12 +5799,12 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5780,12 +5816,12 @@ msgstr "" #: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 -#: templates/js/translated/stock.js:1999 +#: templates/js/translated/stock.js:2035 msgid "IPN" msgstr "DPN" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "Revizyon" @@ -5861,10 +5897,10 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -5885,17 +5921,17 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3897 msgid "Part IPN" msgstr "" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5973,8 +6009,8 @@ msgstr "" msgid "This option must be selected" msgstr "" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5982,12 +6018,17 @@ msgstr "" msgid "Category" msgstr "" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "Varsayılan Konum" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5995,7 +6036,7 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -6010,7 +6051,8 @@ msgstr "Parça Kategorileri" msgid "Default location for parts in this category" msgstr "Bu kategori içindeki parçalar için varsayılan konum" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 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" @@ -6076,7 +6118,7 @@ msgstr "" msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3896 msgid "Part name" msgstr "Parça adı" @@ -6358,7 +6400,7 @@ msgstr "" #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1732 -#: templates/js/translated/stock.js:2785 +#: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" @@ -6410,586 +6452,602 @@ msgstr "" msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 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:3448 -msgid "Test with this name already exists for this part" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "Test Adı" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "Test Açıklaması" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Gerekli" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "Testi geçmesi için bu gerekli mi?" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "" -#: part/models.py:3496 +#: part/models.py:3505 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "" -#: part/models.py:3503 +#: part/models.py:3512 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "Parametre şablon adı benzersiz olmalıdır" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "Parametre Şablonu" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3847 +#: part/models.py:3856 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3885 +#: part/models.py:3894 msgid "Part ID or part name" msgstr "" -#: part/models.py:3886 +#: part/models.py:3895 msgid "Unique part ID value" msgstr "" -#: part/models.py:3888 +#: part/models.py:3897 msgid "Part IPN value" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "Level" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "BOM level" msgstr "" -#: part/models.py:3979 +#: part/models.py:3988 msgid "Select parent part" msgstr "" -#: part/models.py:3989 +#: part/models.py:3998 msgid "Sub part" msgstr "" -#: part/models.py:3990 +#: part/models.py:3999 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4001 +#: part/models.py:4010 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4007 +#: part/models.py:4016 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4013 +#: part/models.py:4022 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4029 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4021 +#: part/models.py:4030 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4028 +#: part/models.py:4037 msgid "BOM item reference" msgstr "" -#: part/models.py:4036 +#: part/models.py:4045 msgid "BOM item notes" msgstr "" -#: part/models.py:4042 +#: part/models.py:4051 msgid "Checksum" msgstr "" -#: part/models.py:4043 +#: part/models.py:4052 msgid "BOM line checksum" msgstr "" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4057 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4049 +#: part/models.py:4058 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4063 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:4055 +#: part/models.py:4064 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:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4069 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "Çeşide İzin Ver" -#: part/models.py:4061 +#: part/models.py:4070 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:4146 stock/models.py:649 +#: part/models.py:4155 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4165 part/models.py:4167 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4298 +#: part/models.py:4307 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4319 +#: part/models.py:4328 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4332 +#: part/models.py:4341 msgid "Parent BOM item" msgstr "" -#: part/models.py:4340 +#: part/models.py:4349 msgid "Substitute part" msgstr "" -#: part/models.py:4356 +#: part/models.py:4365 msgid "Part 1" msgstr "" -#: part/models.py:4364 +#: part/models.py:4373 msgid "Part 2" msgstr "" -#: part/models.py:4365 +#: part/models.py:4374 msgid "Select Related Part" msgstr "" -#: part/models.py:4384 +#: part/models.py:4393 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4389 +#: part/models.py:4398 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:432 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:480 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1104 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1078 +#: part/serializers.py:1114 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1088 +#: part/serializers.py:1124 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1647 +#: part/serializers.py:1693 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1659 +#: part/serializers.py:1705 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1694 +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "" @@ -7147,7 +7205,7 @@ msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/stock.js:2179 users/models.py:191 +#: templates/js/translated/stock.js:2215 users/models.py:191 msgid "Stocktake" msgstr "" @@ -7221,7 +7279,7 @@ msgid "Validate BOM" msgstr "" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "" @@ -7405,7 +7463,7 @@ msgstr "" msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "" @@ -7509,7 +7567,7 @@ msgstr "" #: templates/InvenTree/settings/sidebar.html:51 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 -#: templates/js/translated/stock.js:2033 templates/navbar.html:31 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 msgid "Stock" msgstr "Stok" @@ -7555,7 +7613,7 @@ msgstr "" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 -#: templates/js/translated/stock.js:2209 +#: templates/js/translated/stock.js:2245 msgid "Last Updated" msgstr "" @@ -7999,7 +8057,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "" @@ -8307,16 +8365,16 @@ msgstr "" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "Şablon için geçerli bir nesne sağlanmadı" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "" @@ -8336,103 +8394,111 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "Şablon adı" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "Rapor şablon dosyası" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "Rapor şablon tanımı" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "Revizyon numarası raporla (otomatik artış)" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "Rapor şablonu etkin" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "Stok kalemi sorgu filtreleri (anahter=değer [key=value] olarak virgülle ayrılmış liste)" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" msgstr "" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" msgstr "" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8499,12 +8565,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1492 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Result" msgstr "" @@ -8531,7 +8597,7 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:168 #: stock/admin.py:162 templates/js/translated/stock.js:700 -#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110 msgid "Serial" msgstr "Seri No" @@ -8615,7 +8681,7 @@ msgstr "" #: stock/admin.py:256 stock/models.py:886 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2193 users/models.py:113 +#: templates/js/translated/stock.js:2229 users/models.py:113 msgid "Expiry Date" msgstr "" @@ -8713,7 +8779,7 @@ msgstr "" msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:174 templates/js/translated/stock.js:2745 +#: stock/models.py:174 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" @@ -8722,7 +8788,7 @@ msgstr "" msgid "This is an external stock location" msgstr "" -#: stock/models.py:181 templates/js/translated/stock.js:2754 +#: stock/models.py:181 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" @@ -8739,7 +8805,7 @@ msgstr "" msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:290 msgid "Stock item cannot be created for virtual parts" msgstr "" @@ -8784,7 +8850,7 @@ msgstr "Bu stok kalemi için tedarikçi parçası seçin" msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1351 msgid "Packaging this stock item is stored in" msgstr "" @@ -8796,7 +8862,7 @@ msgstr "" msgid "Serial number for this item" msgstr "Bu öge için seri numarası" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1334 msgid "Batch code for this stock item" msgstr "" @@ -8873,7 +8939,7 @@ msgstr "Seri numaraları tam sayı listesi olmalı" msgid "Quantity does not match serial numbers" msgstr "Miktar seri numaları ile eşleşmiyor" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:529 msgid "Serial numbers already exist" msgstr "Seri numaraları zaten mevcut" @@ -8905,7 +8971,7 @@ msgstr "" msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1240 msgid "Duplicate stock items" msgstr "" @@ -8929,207 +8995,236 @@ msgstr "Stok kalemi stokta olmadığı için taşınamaz" msgid "Entry notes" msgstr "" -#: stock/models.py:2399 +#: stock/models.py:2402 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2405 +#: stock/models.py:2408 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Test result" msgstr "" -#: stock/models.py:2439 +#: stock/models.py:2442 msgid "Test output value" msgstr "" -#: stock/models.py:2447 +#: stock/models.py:2450 msgid "Test result attachment" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2454 msgid "Test notes" msgstr "" -#: stock/serializers.py:96 +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "" + +#: stock/models.py:2463 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2469 +msgid "Started" +msgstr "" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:100 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:119 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 +#: stock/serializers.py:151 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:184 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:267 +#: stock/serializers.py:282 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:380 +#: stock/serializers.py:402 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:442 +#: stock/serializers.py:464 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:455 +#: stock/serializers.py:477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:462 +#: stock/serializers.py:484 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:480 +#: stock/serializers.py:502 msgid "Optional note field" msgstr "" -#: stock/serializers.py:490 +#: stock/serializers.py:512 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:545 +#: stock/serializers.py:567 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:574 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:553 +#: stock/serializers.py:575 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 msgid "Add transaction note (optional)" msgstr "İşlem notu ekle (isteğe bağlı)" -#: stock/serializers.py:566 +#: stock/serializers.py:588 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:596 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:581 +#: stock/serializers.py:607 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:620 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:628 +#: stock/serializers.py:655 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:663 +#: stock/serializers.py:690 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:676 +#: stock/serializers.py:703 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:693 +#: stock/serializers.py:720 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:724 +#: stock/serializers.py:751 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:761 +#: stock/serializers.py:788 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:767 +#: stock/serializers.py:794 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Alt konumlar" -#: stock/serializers.py:1036 +#: stock/serializers.py:1069 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1040 +#: stock/serializers.py:1073 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1044 +#: stock/serializers.py:1077 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1068 +#: stock/serializers.py:1101 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1074 +#: stock/serializers.py:1107 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1082 +#: stock/serializers.py:1115 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1125 stock/serializers.py:1379 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1171 +#: stock/serializers.py:1204 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1176 +#: stock/serializers.py:1209 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1177 +#: stock/serializers.py:1210 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1182 +#: stock/serializers.py:1215 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1183 +#: stock/serializers.py:1216 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1193 +#: stock/serializers.py:1226 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1260 +#: stock/serializers.py:1293 msgid "No Change" msgstr "" -#: stock/serializers.py:1289 +#: stock/serializers.py:1322 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1308 +#: stock/serializers.py:1341 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1336 +#: stock/serializers.py:1369 msgid "Stock transaction notes" msgstr "" @@ -9154,7 +9249,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 msgid "Delete Test Data" msgstr "" @@ -9170,15 +9265,15 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:274 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 msgid "Add Test Result" msgstr "" @@ -9201,17 +9296,17 @@ msgid "Stock adjustment actions" msgstr "Stok ayarlama işlemleri" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 msgid "Count stock" msgstr "" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:1803 msgid "Add stock" msgstr "" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1776 +#: templates/js/translated/stock.js:1812 msgid "Remove stock" msgstr "" @@ -9220,12 +9315,12 @@ msgid "Serialize stock" msgstr "Stoku seri numarala" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 msgid "Transfer stock" msgstr "" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1884 msgid "Assign to customer" msgstr "" @@ -9364,7 +9459,7 @@ msgid "No stocktake performed" msgstr "" #: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1915 +#: templates/js/translated/stock.js:1951 msgid "stock item" msgstr "" @@ -9469,7 +9564,7 @@ msgid "New Location" msgstr "Yeni Konum" #: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2536 +#: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" @@ -10063,7 +10158,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:37 msgid "New Location Type" msgstr "" @@ -10120,7 +10215,7 @@ msgstr "" msgid "Stock Settings" msgstr "" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:33 msgid "Stock Location Types" msgstr "" @@ -10662,7 +10757,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "" @@ -10676,7 +10771,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "" @@ -11051,62 +11146,66 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "" @@ -11389,7 +11488,7 @@ msgstr "" #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 -#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11401,7 +11500,7 @@ msgstr "" msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006 +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" @@ -11449,29 +11548,29 @@ msgstr "" msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "" @@ -11804,15 +11903,15 @@ msgstr "" msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3087 +#: templates/js/translated/forms.js:3103 msgid "Select Columns" msgstr "" @@ -12289,7 +12388,7 @@ msgid "No category" msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 -#: templates/js/translated/stock.js:2633 +#: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" @@ -12301,7 +12400,7 @@ msgstr "" msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" @@ -12313,64 +12412,64 @@ msgstr "" msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" @@ -12907,7 +13006,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1737 +#: templates/js/translated/stock.js:1773 msgid "Shipped to customer" msgstr "" @@ -13165,7 +13264,7 @@ msgstr "" msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" @@ -13189,248 +13288,256 @@ msgstr "" msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1440 +#: templates/js/translated/stock.js:1447 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1443 +#: templates/js/translated/stock.js:1450 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1466 +#: templates/js/translated/stock.js:1473 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1530 +#: templates/js/translated/stock.js:1537 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1677 +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1733 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1729 +#: templates/js/translated/stock.js:1765 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1769 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1741 +#: templates/js/translated/stock.js:1777 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1747 +#: templates/js/translated/stock.js:1783 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1839 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1848 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:1897 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1916 +#: templates/js/translated/stock.js:1952 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1921 +#: templates/js/translated/stock.js:1957 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1932 +#: templates/js/translated/stock.js:1968 msgid "Stock Actions" msgstr "" -#: templates/js/translated/stock.js:1976 +#: templates/js/translated/stock.js:2012 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2054 +#: templates/js/translated/stock.js:2090 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2059 +#: templates/js/translated/stock.js:2095 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2062 +#: templates/js/translated/stock.js:2098 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2065 +#: templates/js/translated/stock.js:2101 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2067 +#: templates/js/translated/stock.js:2103 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2069 +#: templates/js/translated/stock.js:2105 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2072 +#: templates/js/translated/stock.js:2108 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2074 +#: templates/js/translated/stock.js:2110 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2114 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2080 +#: templates/js/translated/stock.js:2116 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2085 +#: templates/js/translated/stock.js:2121 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2087 +#: templates/js/translated/stock.js:2123 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2089 +#: templates/js/translated/stock.js:2125 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2129 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2258 +#: templates/js/translated/stock.js:2294 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2305 +#: templates/js/translated/stock.js:2341 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2433 +#: templates/js/translated/stock.js:2469 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2573 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2692 +#: templates/js/translated/stock.js:2728 msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2810 +#: templates/js/translated/stock.js:2846 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2814 +#: templates/js/translated/stock.js:2850 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:2862 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2848 +#: templates/js/translated/stock.js:2884 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2865 +#: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2880 +#: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2897 +#: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2914 +#: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3005 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2977 +#: templates/js/translated/stock.js:3013 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:3049 +#: templates/js/translated/stock.js:3085 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139 +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:3161 +#: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:3182 +#: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:3183 +#: 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:3185 +#: 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:3186 +#: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:3187 +#: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:3188 +#: 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:3201 +#: templates/js/translated/stock.js:3237 msgid "Select part to install" msgstr "" -#: templates/js/translated/stock.js:3264 +#: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" msgstr "" -#: templates/js/translated/stock.js:3277 +#: templates/js/translated/stock.js:3313 msgid "Selected stock items" msgstr "" -#: templates/js/translated/stock.js:3281 +#: templates/js/translated/stock.js:3317 msgid "Change Stock Status" msgstr "" diff --git a/InvenTree/locale/vi/LC_MESSAGES/django.po b/InvenTree/locale/vi/LC_MESSAGES/django.po index 5826ccb63e..14225320e9 100644 --- a/InvenTree/locale/vi/LC_MESSAGES/django.po +++ b/InvenTree/locale/vi/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 04:05+0000\n" -"PO-Revision-Date: 2024-02-28 07:23\n" +"POT-Creation-Date: 2024-03-19 01:26+0000\n" +"PO-Revision-Date: 2024-03-19 11:52\n" "Last-Translator: \n" "Language-Team: Vietnamese\n" "Language: vi_VN\n" @@ -30,20 +30,20 @@ msgstr "Người dùng không được phân quyền xem mẫu này" msgid "Invalid unit provided ({unit})" msgstr "" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "Chưa cung cấp giá trị" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "Không thể chuyển đổi {original} sang {unit}" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" msgstr "Số lượng cung cấp không hợp lệ" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" msgstr "Số lượng cung cấp không hợp lệ ({exc})" @@ -64,18 +64,18 @@ msgstr "Nhập ngày" #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 #: templates/js/translated/return_order.js:776 #: templates/js/translated/sales_order.js:1067 #: templates/js/translated/sales_order.js:1982 -#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 msgid "Notes" msgstr "Ghi chú" @@ -132,42 +132,42 @@ msgstr "Miền email được cung cấp không được phê duyệt." msgid "Registration is disabled." msgstr "Đăng ký bị vô hiệu hóa." -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "Số lượng cung cấp không hợp lệ" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "Chuỗi số sê-ri trống" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "Trùng lặp sê-ri" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" msgstr "Phạm vi nhóm không hợp lệ: {group}" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "Khoảng nhóm {group} vượt cho phép số lượng ({expected_quantity})" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" msgstr "Thứ tự nhóm không hợp lệ: {group}" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "Không tìm thấy số sê-ri" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "Số sê ri duy nhất ({len(serials)}) phải phù hợp số lượng ({expected_quantity})" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "Xóa thẻ HTML từ giá trị này" @@ -203,131 +203,135 @@ msgstr "Máy chủ trả về phản hồi trống" msgid "Supplied URL is not a valid image file" msgstr "URL được cung cấp không phải là tệp hình ảnh hợp lệ" -#: InvenTree/locales.py:16 +#: InvenTree/locales.py:18 msgid "Bulgarian" msgstr "Tiếng Bulgaria" -#: InvenTree/locales.py:17 +#: InvenTree/locales.py:19 msgid "Czech" msgstr "Tiếng Séc" -#: InvenTree/locales.py:18 +#: InvenTree/locales.py:20 msgid "Danish" msgstr "Tiếng Đan Mạch" -#: InvenTree/locales.py:19 +#: InvenTree/locales.py:21 msgid "German" msgstr "Tiếng Đức" -#: InvenTree/locales.py:20 +#: InvenTree/locales.py:22 msgid "Greek" msgstr "Tiếng Hy Lạp" -#: InvenTree/locales.py:21 +#: InvenTree/locales.py:23 msgid "English" msgstr "Tiếng Anh" -#: InvenTree/locales.py:22 +#: InvenTree/locales.py:24 msgid "Spanish" msgstr "Tiếng Tây Ban Nha" -#: InvenTree/locales.py:23 +#: InvenTree/locales.py:25 msgid "Spanish (Mexican)" msgstr "Tiếng Tây Ban Nha (Mê-hi-cô)" -#: InvenTree/locales.py:24 +#: InvenTree/locales.py:26 msgid "Farsi / Persian" msgstr "Tiếng Ba Tư" -#: InvenTree/locales.py:25 +#: InvenTree/locales.py:27 msgid "Finnish" msgstr "Tiếng Phần Lan" -#: InvenTree/locales.py:26 +#: InvenTree/locales.py:28 msgid "French" msgstr "Tiếng Pháp" -#: InvenTree/locales.py:27 +#: InvenTree/locales.py:29 msgid "Hebrew" msgstr "Tiếng Do Thái" -#: InvenTree/locales.py:28 +#: InvenTree/locales.py:30 msgid "Hindi" msgstr "Tiếng Ấn Độ" -#: InvenTree/locales.py:29 +#: InvenTree/locales.py:31 msgid "Hungarian" msgstr "Tiếng Hung-ga-ri" -#: InvenTree/locales.py:30 +#: InvenTree/locales.py:32 msgid "Italian" msgstr "Tiếng Ý" -#: InvenTree/locales.py:31 +#: InvenTree/locales.py:33 msgid "Japanese" msgstr "Tiếng Nhật" -#: InvenTree/locales.py:32 +#: InvenTree/locales.py:34 msgid "Korean" msgstr "Tiếng Hàn" -#: InvenTree/locales.py:33 +#: InvenTree/locales.py:35 +msgid "Latvian" +msgstr "" + +#: InvenTree/locales.py:36 msgid "Dutch" msgstr "Tiếng Hà Lan" -#: InvenTree/locales.py:34 +#: InvenTree/locales.py:37 msgid "Norwegian" msgstr "Tiếng Na Uy" -#: InvenTree/locales.py:35 +#: InvenTree/locales.py:38 msgid "Polish" msgstr "Tiếng Ba Lan" -#: InvenTree/locales.py:36 +#: InvenTree/locales.py:39 msgid "Portuguese" msgstr "Tiếng Bồ Đào Nha" -#: InvenTree/locales.py:37 +#: InvenTree/locales.py:40 msgid "Portuguese (Brazilian)" msgstr "Tiếng Bồ Đào Nha (Brazil)" -#: InvenTree/locales.py:38 +#: InvenTree/locales.py:41 msgid "Russian" msgstr "Tiếng Nga" -#: InvenTree/locales.py:39 +#: InvenTree/locales.py:42 msgid "Slovak" msgstr "Tiếng Slo-va-ki-a" -#: InvenTree/locales.py:40 +#: InvenTree/locales.py:43 msgid "Slovenian" msgstr "Tiếng Slô-ven-ni-a" -#: InvenTree/locales.py:41 +#: InvenTree/locales.py:44 msgid "Serbian" msgstr "Tiếng Serbia" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:45 msgid "Swedish" msgstr "Tiếng Thụy Điển" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:46 msgid "Thai" msgstr "Tiếng Thái" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:47 msgid "Turkish" msgstr "Tiếng Thổ Nhĩ Kỳ" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:48 msgid "Vietnamese" msgstr "Tiếng Việt" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:49 msgid "Chinese (Simplified)" msgstr "Tiếng Trung (Giản thể)" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:50 msgid "Chinese (Traditional)" msgstr "Tiếng Trung (Phồn thể)" @@ -391,7 +395,7 @@ msgstr "Tập tin bị thiếu" msgid "Missing external link" msgstr "Thiếu liên kết bên ngoài" -#: InvenTree/models.py:559 stock/models.py:2446 +#: InvenTree/models.py:559 stock/models.py:2449 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -401,7 +405,7 @@ msgstr "Đính kèm" msgid "Select file to attach" msgstr "Chọn file đính kèm" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -432,13 +436,13 @@ msgstr "Bình luận" msgid "File comment" msgstr "Bình luận tệp tin" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:3000 users/models.py:100 +#: templates/js/translated/stock.js:3036 users/models.py:100 msgid "User" msgstr "Người dùng" @@ -479,10 +483,10 @@ msgstr "Tên trùng lặp không thể tồn tại trong cùng cấp thư mục" msgid "Invalid choice" msgstr "Lựa chọn sai" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -495,7 +499,7 @@ msgstr "Lựa chọn sai" #: templates/js/translated/company.js:1155 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "Tên" @@ -506,10 +510,10 @@ msgstr "Tên" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -523,7 +527,7 @@ msgstr "Tên" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -531,8 +535,8 @@ msgstr "Tên" #: templates/js/translated/return_order.js:314 #: templates/js/translated/sales_order.js:802 #: templates/js/translated/sales_order.js:1812 -#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021 -#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "Mô tả" @@ -545,7 +549,7 @@ msgid "parent" msgstr "thư mục cha" #: InvenTree/models.py:916 templates/js/translated/part.js:2794 -#: templates/js/translated/stock.js:2721 +#: templates/js/translated/stock.js:2757 msgid "Path" msgstr "Đường dẫn" @@ -581,7 +585,7 @@ msgstr "Lỗi máy chủ" 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:4134 +#: InvenTree/serializers.py:62 part/models.py:4143 msgid "Must be a valid number" msgstr "Phải là một số hợp lệ" @@ -596,89 +600,89 @@ msgstr "Tiền tệ" msgid "Select currency from available options" msgstr "Chọn tiền tệ trong các tùy chọn đang có" -#: InvenTree/serializers.py:436 +#: InvenTree/serializers.py:441 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:448 +#: InvenTree/serializers.py:453 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:467 +#: InvenTree/serializers.py:472 msgid "Your account has been created." msgstr "Tài khoản của bạn đã được tạo." -#: InvenTree/serializers.py:469 +#: InvenTree/serializers.py:474 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:476 +#: InvenTree/serializers.py:481 msgid "Welcome to InvenTree" msgstr "Chào mừng đến với InvenTree" -#: InvenTree/serializers.py:537 +#: InvenTree/serializers.py:542 msgid "Filename" msgstr "Tên tập tin" -#: InvenTree/serializers.py:571 +#: InvenTree/serializers.py:576 msgid "Invalid value" msgstr "Giá trị không hợp lệ" -#: InvenTree/serializers.py:591 +#: InvenTree/serializers.py:596 msgid "Data File" msgstr "Tập tin dữ liệu" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:597 msgid "Select data file for upload" msgstr "Chọn tệp tin để tải lên" -#: InvenTree/serializers.py:609 +#: InvenTree/serializers.py:614 msgid "Unsupported file type" msgstr "Loại tệp tin không được hỗ trợ" -#: InvenTree/serializers.py:615 +#: InvenTree/serializers.py:620 msgid "File is too large" msgstr "Tệp tin quá lớn" -#: InvenTree/serializers.py:636 +#: InvenTree/serializers.py:641 msgid "No columns found in file" msgstr "Không tìm thấy cột nào trong tệp tin" -#: InvenTree/serializers.py:639 +#: InvenTree/serializers.py:644 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:752 +#: InvenTree/serializers.py:757 msgid "No data rows provided" msgstr "Chưa có dữ liệu" -#: InvenTree/serializers.py:755 +#: InvenTree/serializers.py:760 msgid "No data columns supplied" msgstr "Chưa cung cấp cột dữ liệu" -#: InvenTree/serializers.py:822 +#: InvenTree/serializers.py:827 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "Thiếu cột bắt buộc: '{name}'" -#: InvenTree/serializers.py:831 +#: InvenTree/serializers.py:836 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "Nhân bản cột: '{col}'" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:859 msgid "Remote Image" msgstr "Hình ảnh từ xa" -#: InvenTree/serializers.py:855 +#: InvenTree/serializers.py:860 msgid "URL of remote image file" msgstr "URL của tệp hình ảnh bên ngoài" -#: InvenTree/serializers.py:873 +#: InvenTree/serializers.py:878 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:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "Nhân công chạy ngầm kiểm tra thất bại" @@ -818,7 +822,7 @@ msgstr "Tách từ mục cha" msgid "Split child item" msgstr "Tách mục con" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 msgid "Merged stock items" msgstr "Kho hàng đã được gộp" @@ -838,7 +842,7 @@ msgstr "Đầu ra đơn đặt bản dựng đã hoàn thành" msgid "Build order output rejected" msgstr "Đầu ra đơn đặt bản dựng bị từ chối" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 msgid "Consumed by build order" msgstr "Tiêu hao bởi đơn đặt bản dựng" @@ -938,14 +942,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:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: 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:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -960,7 +964,7 @@ msgid "Tracked" msgstr "Đã theo dõi" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -985,7 +989,7 @@ msgstr "Có sẵn" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "Tạo đơn hàng" @@ -1014,7 +1018,7 @@ msgstr "Tham chiếu đơn đặt bản dựng" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1044,11 +1048,11 @@ msgstr "Đơn đặt bản dựng với bản dựng này đã được phân b #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1059,7 +1063,7 @@ msgstr "Đơn đặt bản dựng với bản dựng này đã được phân b #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:267 stock/serializers.py:689 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1086,9 +1090,9 @@ msgstr "Đơn đặt bản dựng với bản dựng này đã được phân b #: templates/js/translated/sales_order.js:1598 #: templates/js/translated/sales_order.js:1796 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960 -#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054 -#: templates/js/translated/stock.js:3200 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 msgid "Part" msgstr "Nguyên liệu" @@ -1146,8 +1150,8 @@ msgstr "Trnạg thái bản dựng" msgid "Build status code" msgstr "Mã trạng thái bản dựng" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "Mã lô hàng" @@ -1242,53 +1246,53 @@ msgstr "Mã dự án" msgid "Project code for this build order" msgstr "Mã dự án cho đơn đặt bản dựng này" -#: build/models.py:559 +#: build/models.py:575 #, 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:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "Một đơn đặt bản dựng đã được hoàn thành" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "Không có đầu ra bản dựng đã được chỉ ra" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "Đầu ra bản dựng đã được hoàn thiện" -#: build/models.py:789 +#: build/models.py:805 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:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 msgid "Quantity must be greater than zero" msgstr "Số lượng phải lớn hơn 0" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 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:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" msgstr "Dựng đối tượng" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1298,7 +1302,7 @@ msgstr "Dựng đối tượng" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:463 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1310,7 +1314,7 @@ msgstr "Dựng đối tượng" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1325,43 +1329,43 @@ msgstr "Dựng đối tượng" #: templates/js/translated/sales_order.js:1698 #: templates/js/translated/sales_order.js:1824 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 -#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985 -#: templates/js/translated/stock.js:3068 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "Số lượng" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" msgstr "Yêu cầu số lượng để dựng đơn đặt" -#: build/models.py:1381 +#: build/models.py:1397 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:1390 +#: build/models.py:1406 #, 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:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "Kho hàng đã bị phân bổ quá đà" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 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:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "Số lượng phải là 1 cho kho sê ri" -#: build/models.py:1473 +#: build/models.py:1489 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:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 @@ -1372,23 +1376,23 @@ msgstr "Hàng trong kho đã chọn không phù hợp với đường BOM" #: templates/js/translated/sales_order.js:1605 #: templates/js/translated/sales_order.js:1692 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 -#: templates/js/translated/stock.js:2941 +#: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "Kho hàng" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "Kho hàng gốc" -#: build/models.py:1559 +#: build/models.py:1575 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:1567 +#: build/models.py:1583 msgid "Install into" msgstr "Cài đặt vào" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "Kho hàng đích" @@ -1425,8 +1429,8 @@ msgstr "Số lượng nguyên dương cần phải điền cho sản phẩm có 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:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 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" @@ -1451,10 +1455,10 @@ msgstr "Số sêri sau đây đã tồn tại hoặc không hợp lệ" 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:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1466,8 +1470,8 @@ msgstr "Danh sách đầu ra bản dựng phải được cung cấp" #: templates/js/translated/sales_order.js:1627 #: templates/js/translated/sales_order.js:1706 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164 -#: templates/js/translated/stock.js:2835 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 msgid "Location" msgstr "Địa điểm" @@ -1493,16 +1497,16 @@ msgstr "Vị trí cho đầu ra bản dựng hoàn thiện" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 #: templates/js/translated/purchase_order.js:1723 #: templates/js/translated/return_order.js:331 #: templates/js/translated/sales_order.js:819 -#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959 -#: templates/js/translated/stock.js:3084 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 msgid "Status" msgstr "Trạng thái" @@ -1566,7 +1570,7 @@ msgstr "Chấp nhận hàng hóa không được phân bổ đầy đủ vào đ 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:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "Chấp nhận không hoàn thành" @@ -1602,11 +1606,11 @@ msgstr "Mục chi tiết bản dựng" 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:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1065 msgid "Item must be in stock" msgstr "Hàng hóa phải trong kho" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "Số lượng có sẵn ({q}) đã bị vượt quá" @@ -1619,7 +1623,7 @@ msgstr "Đầu ra bản dựng phải được xác định cho việc phân s 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:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "Hàng hóa phân bổ phải được cung cấp" @@ -1659,44 +1663,45 @@ msgstr "Mục tùy chọn" 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:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 #: stock/api.py:745 msgid "BOM Item" msgstr "Mục BOM" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "Bật đơn hàng" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "Đang sản xuất" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "Số hàng tồn" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "Kho được yêu cầu cho đặt hàng bản dựng" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "Đơn đặt bản dựng quá hạn" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "Đặt hàng bản dựng {bo} đang quá hạn" @@ -1862,7 +1867,7 @@ msgstr "Đầu ra hoàn thiện" #: templates/js/translated/pricing.js:929 #: templates/js/translated/sales_order.js:769 #: templates/js/translated/sales_order.js:992 -#: templates/js/translated/stock.js:2888 +#: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "Đơn đặt hàng" @@ -1920,8 +1925,8 @@ msgstr "Sản phẩm đã phân bổ" #: templates/js/translated/build.js:1377 #: templates/js/translated/model_renderers.js:235 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153 -#: templates/js/translated/stock.js:3091 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" @@ -1990,27 +1995,31 @@ msgstr "Đơn đặt yêu cầu sản phẩm" msgid "Order Parts" msgstr "Đặt hàng sản phẩm" -#: build/templates/build/detail.html:210 +#: 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 "Đầu ra bản dựng chưa hoàn thành" -#: build/templates/build/detail.html:214 +#: build/templates/build/detail.html:219 msgid "Create new build output" msgstr "Tạo đầu ra bản dựng mới" -#: build/templates/build/detail.html:215 +#: build/templates/build/detail.html:220 msgid "New Build Output" msgstr "Đầu ra bản dựng mới" -#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "Kho tiêu thụ" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "Đầu ra bản dựng hoàn thiện" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2026,15 +2035,15 @@ msgstr "Đầu ra bản dựng hoàn thiện" msgid "Attachments" msgstr "Tập tin đính kèm" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "Ghi chép bản dựng" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" msgstr "" @@ -2112,1390 +2121,1414 @@ msgstr "Mô tả dự án" 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:737 +#: common/models.py:744 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:741 +#: common/models.py:748 msgid "Settings value" msgstr "Giá trị cài đặt" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "Giá trị đã chọn không hợp lệ" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "Giá trị phải là kiểu boolean" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "Giá trị phải là một số nguyên dương" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "Chuỗi khóa phải duy nhất" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "Không có nhóm" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "Tên miền rỗng là không được phép." -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "Tên miền không hợp lệ: {domain}" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "Không phần mở rộng" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "Cần khởi động lại" -#: common/models.py:1231 +#: common/models.py:1238 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:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "Chuyển dữ liệu chờ xử lý" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "Số đợt nâng cấp cơ sở dữ liệu chờ xử lý" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "Tên thực thể máy chủ" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "Mô tả chuỗi cho thực thể máy chủ" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "Sử dụng tên thực thể" -#: common/models.py:1251 +#: common/models.py:1258 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:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "Cấm hiển thị `giới thiệu`" -#: common/models.py:1257 +#: common/models.py:1264 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:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "Tên công ty" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "Tên công ty nội bộ" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "URL cơ sở" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "URL cơ sở cho thực thể máy chủ" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "Tiền tệ mặc định" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "Chọn tiền tệ chính khi tính giá" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "Tần suất cập nhật tiền tệ" -#: common/models.py:1283 +#: common/models.py:1290 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:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "ngày" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "Phần mở rộng cập nhật tiền tệ" -#: common/models.py:1291 +#: common/models.py:1298 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:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "Tải về từ URL" -#: common/models.py:1298 +#: common/models.py:1305 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:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "Giới hạn kích thước tải xuống" -#: common/models.py:1305 +#: common/models.py:1312 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:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "User-agent được dùng để tải xuống theo URL" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "Yêu cầu xác nhận" -#: common/models.py:1325 +#: common/models.py:1332 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:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "Cấp độ cây" -#: common/models.py:1332 +#: common/models.py:1339 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:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "Thời gian kiểm tra bản cập nhật" -#: common/models.py:1339 +#: common/models.py:1346 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:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "Sao lưu tự động" -#: common/models.py:1346 +#: common/models.py:1353 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:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "Khoảng thời gian sao lưu tự động" -#: common/models.py:1352 +#: common/models.py:1359 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:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "Khoảng thời gian xóa tác vụ" -#: common/models.py:1360 +#: common/models.py:1367 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:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "Khoảng thời gian xóa nhật ký lỗi" -#: common/models.py:1369 +#: common/models.py:1376 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:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "Khoảng thời gian xóa thông báo" -#: common/models.py:1378 +#: common/models.py:1385 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:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "Hỗ trợ mã vạch" -#: common/models.py:1386 +#: common/models.py:1393 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:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "Độ trễ quét mã vạch" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "Thời gian trễ xử lý đầu đọc mã vạch" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "Hỗ trợ mã vạch qua webcam" -#: common/models.py:1399 +#: common/models.py:1406 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:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "Phiên bản Sản phẩm" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" msgstr "Bật trường phiên bản cho sản phẩm" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "Mẫu IPN" -#: common/models.py:1411 +#: common/models.py:1418 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:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "Cho phép trùng IPN" -#: common/models.py:1415 +#: common/models.py:1422 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:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "Cho phép sửa IPN" -#: common/models.py:1421 +#: common/models.py:1428 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:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "Sao chép dữ liệu BOM của sản phẩm" -#: common/models.py:1427 +#: common/models.py:1434 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:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "Sao chép dữ liệu tham số sản phẩm" -#: common/models.py:1433 +#: common/models.py:1440 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:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "Chép thông tin kiểm thử sản phẩm" -#: common/models.py:1439 +#: common/models.py:1446 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:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "Sao chéo mẫu tham số danh mục" -#: common/models.py:1445 +#: common/models.py:1452 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:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "Mẫu" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "Sản phẩm là mẫu bởi mặc định" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 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:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "Thành phần" -#: common/models.py:1463 +#: common/models.py:1470 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:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "Có thể mua" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "Sản phẩm mặc định có thể mua được" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "Có thể bán" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "Sản phẩm mặc định có thể bán được" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "Sản phẩm mặc định có thể theo dõi được" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "Sản phẩm mặc định là số hóa" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "Hiển thị Nhập liệu trong khung xem" -#: common/models.py:1493 +#: common/models.py:1500 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:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "Hiển thị sản phẩm liên quan" -#: common/models.py:1499 +#: common/models.py:1506 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:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "Số liệu tồn kho ban đầu" -#: common/models.py:1505 +#: common/models.py:1512 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:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "Dữ liệu nhà cung cấp ban đầu" -#: common/models.py:1512 +#: common/models.py:1519 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:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "Định dạng tên sản phẩm hiển thị" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "Định dạng để hiển thị tên sản phẩm" -#: common/models.py:1525 +#: common/models.py:1532 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:1526 +#: common/models.py:1533 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:1530 +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "Bắt buộc đơn vị tham số" -#: common/models.py:1532 +#: common/models.py:1539 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:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "Vị trí phần thập phân giá bán tối thiểu" -#: common/models.py:1540 +#: common/models.py:1547 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:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "Vị trí phần thập phân giá bán tối đa" -#: common/models.py:1548 +#: common/models.py:1555 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:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "Sử dụng giá bán nhà cung cấp" -#: common/models.py:1556 +#: 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:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "Ghi đè lịch sử mua hàng" -#: common/models.py:1564 +#: 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:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "Sử dụng giá hàng hóa trong kho" -#: common/models.py:1572 +#: 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:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "Tuổi giá kho hàng" -#: common/models.py:1580 +#: 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:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "Sử dụng giá biến thể" -#: common/models.py:1588 +#: 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:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "Chỉ các biến thể hoạt động" -#: common/models.py:1595 +#: 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:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "Tần suất tạo lại giá" -#: common/models.py:1603 +#: 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:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "Giá nội bộ" -#: common/models.py:1611 +#: 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:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "Ghi đè giá nội bộ" -#: common/models.py:1618 +#: 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:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "Bật in tem nhãn" -#: common/models.py:1625 +#: 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:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "DPI hỉnh ảnh tem nhãn" -#: common/models.py:1632 +#: 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:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "Bật báo cáo" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "Cho phép tạo báo cáo" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "Chế độ gỡ lỗi" -#: common/models.py:1645 +#: 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:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: 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:202 msgid "Page Size" msgstr "Khổ giấy" -#: common/models.py:1651 +#: 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:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "Bật báo cáo kiểm thử" -#: common/models.py:1657 +#: 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:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "Đính kèm báo cáo kiểm thử" -#: common/models.py:1664 +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "Sê ri toàn cục duy nhất" -#: common/models.py:1671 +#: 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:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "Tự động điền số sê ri" -#: common/models.py:1677 +#: 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:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "Xóa kho đã hết hàng" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "Nhận dạng hành vi mặc định khi hàng trong kho bị hết" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "Mẫu sinh mã theo lô" -#: common/models.py:1692 +#: 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:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "Quá hạn trong kho" -#: common/models.py:1698 +#: 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:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "Bán kho quá hạn" -#: common/models.py:1704 +#: 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:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "Thời gian hàng cũ trong kho" -#: common/models.py:1711 +#: 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:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "Dựng kho quá hạn" -#: common/models.py:1719 +#: 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:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "Kiểm soát sở hữu kho" -#: common/models.py:1725 +#: 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:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "Biểu tượng địa điểm kho mặc định" -#: common/models.py:1731 +#: 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:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "Hiển thị hàng hóa đã lắp đặt" -#: common/models.py:1736 +#: 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:1741 +#: 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 "Build Order Reference Pattern" msgstr "Mã tham chiếu đơn đặt bản dựng" -#: common/models.py:1743 +#: common/models.py:1764 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:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "Bật đơn hàng trả lại" -#: common/models.py:1750 +#: common/models.py:1771 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:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "Mẫu tham chiếu đơn hàng trả lại" -#: common/models.py:1757 +#: common/models.py:1778 msgid "Required pattern for generating Return Order reference field" -msgstr "Mẫu bắt buộc để tạo trường tham chiếu đơn hàng trả lại" +msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "Sửa đơn hàng trả lại đã hoàn thành" -#: common/models.py:1765 +#: common/models.py:1786 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:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "Mẫu tham chiếu đơn đặt hàng" -#: common/models.py:1773 +#: common/models.py:1794 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:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "Vận chuyển mặc định đơn đặt hàng" -#: common/models.py:1780 +#: common/models.py:1801 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:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "Sửa đơn đặt hàng đã hoàn thành" -#: common/models.py:1787 +#: common/models.py:1808 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:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "Mẫu tham chiếu đơn đặt mua" -#: common/models.py:1795 +#: common/models.py:1816 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:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "Sửa đơn đặt mua đã hoàn thành" -#: common/models.py:1803 +#: common/models.py:1824 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:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "Tự động hoàn thành đơn đặt mua" -#: common/models.py:1811 +#: common/models.py:1832 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "Bật quên mật khẩu" -#: common/models.py:1819 +#: common/models.py:1840 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:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "Bật đăng ký" -#: common/models.py:1825 +#: common/models.py:1846 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:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "Bật SSO" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "Cho phép SSO tại trang đăng nhập" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "Bật đăng ký SSO" -#: common/models.py:1838 +#: common/models.py:1859 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:1844 +#: common/models.py:1865 msgid "Email required" msgstr "Yêu cầu email" -#: common/models.py:1845 +#: common/models.py:1866 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:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "Người dùng tự động điền SSO" -#: common/models.py:1852 +#: common/models.py:1873 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:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "Thư 2 lần" -#: common/models.py:1859 +#: common/models.py:1880 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:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "Mật khẩu 2 lần" -#: common/models.py:1865 +#: common/models.py:1886 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:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "Các tên miền được phép" -#: common/models.py:1872 +#: common/models.py:1893 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:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "Nhóm khi đăng ký" -#: common/models.py:1879 +#: common/models.py:1900 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:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "Bắt buộc MFA" -#: common/models.py:1885 +#: common/models.py:1906 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:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "Kiểm tra phần mở rộng khi khởi động" -#: common/models.py:1892 +#: common/models.py:1913 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:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "Kiểm tra cập nhật plugin" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "Bật tích hợp URL" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "Bật phần mở rộng để thêm định tuyến URL" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "Bật tích hợp điều hướng" -#: common/models.py:1915 +#: common/models.py:1936 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:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "Bật tích hợp ứng dụng" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "Bật phần mở rộng để thêm ứng dụng" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "Cho phép tích hợp lập lịch" -#: common/models.py:1929 +#: common/models.py:1950 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:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "Bật tích hợp nguồn cấp sự kiện" -#: common/models.py:1936 +#: common/models.py:1957 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:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "Bật mã dự án" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "Bật mã dự án để theo dõi dự án" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "Chức năng kiểm kê" -#: common/models.py:1950 +#: common/models.py:1971 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:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "Ngoại trừ vị trí bên ngoài" -#: common/models.py:1958 +#: common/models.py:1979 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:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "Giai đoạn kiểm kê tự động" -#: common/models.py:1966 +#: common/models.py:1987 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:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "Khoảng thời gian xóa báo cáo" -#: common/models.py:1974 +#: common/models.py:1995 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:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "Hiển thị tên đầy đủ của người dùng" -#: common/models.py:1982 +#: common/models.py:2003 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:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2029 common/models.py:2429 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:2043 +#: common/models.py:2070 msgid "Hide inactive parts" msgstr "Ẩn sản phẩm ngừng hoạt động" -#: common/models.py:2045 +#: common/models.py:2072 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:2051 +#: common/models.py:2078 msgid "Show subscribed parts" msgstr "Hiện sản phẩm đã đăng ký" -#: common/models.py:2052 +#: common/models.py:2079 msgid "Show subscribed parts on the homepage" msgstr "Hiện sản phẩm đã đăng ký trên trang chủ" -#: common/models.py:2057 +#: common/models.py:2084 msgid "Show subscribed categories" msgstr "Hiện danh mục đã đăng ký" -#: common/models.py:2058 +#: common/models.py:2085 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:2063 +#: common/models.py:2090 msgid "Show latest parts" msgstr "Hiển thị nguyên liệu mới nhất" -#: common/models.py:2064 +#: common/models.py:2091 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:2069 +#: common/models.py:2096 msgid "Show unvalidated BOMs" msgstr "Hiển thị BOM chưa được xác thực" -#: common/models.py:2070 +#: common/models.py:2097 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:2075 +#: common/models.py:2102 msgid "Show recent stock changes" msgstr "Hiện thay đổi kho hàng gần đây" -#: common/models.py:2076 +#: common/models.py:2103 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:2081 +#: common/models.py:2108 msgid "Show low stock" msgstr "Hiển thị hàng còn ít" -#: common/models.py:2082 +#: common/models.py:2109 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:2087 +#: common/models.py:2114 msgid "Show depleted stock" msgstr "Hiển thị hết hàng" -#: common/models.py:2088 +#: common/models.py:2115 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:2093 +#: common/models.py:2120 msgid "Show needed stock" msgstr "Hiển thị hàng cần thiết" -#: common/models.py:2094 +#: common/models.py:2121 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:2099 +#: common/models.py:2126 msgid "Show expired stock" msgstr "Bán kho quá hạn" -#: common/models.py:2100 +#: common/models.py:2127 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:2105 +#: common/models.py:2132 msgid "Show stale stock" msgstr "Hiện kho hàng ế" -#: common/models.py:2106 +#: common/models.py:2133 msgid "Show stale stock items on the homepage" msgstr "Hiện hàng trong kho bị ế trên trang chủ" -#: common/models.py:2111 +#: common/models.py:2138 msgid "Show pending builds" msgstr "Hiện bản dựng chờ xử lý" -#: common/models.py:2112 +#: common/models.py:2139 msgid "Show pending builds on the homepage" msgstr "Hiện bản dựng chờ xử lý trên trang chủ" -#: common/models.py:2117 +#: common/models.py:2144 msgid "Show overdue builds" msgstr "Hiện bản dựng quá hạn" -#: common/models.py:2118 +#: common/models.py:2145 msgid "Show overdue builds on the homepage" msgstr "Hiện bản dựng quá hạn trên trang chủ" -#: common/models.py:2123 +#: common/models.py:2150 msgid "Show outstanding POs" msgstr "Hiện PO nổi bật" -#: common/models.py:2124 +#: common/models.py:2151 msgid "Show outstanding POs on the homepage" msgstr "Hiện PO nổi bật trên trang chủ" -#: common/models.py:2129 +#: common/models.py:2156 msgid "Show overdue POs" msgstr "Hiện PO quá hạn" -#: common/models.py:2130 +#: common/models.py:2157 msgid "Show overdue POs on the homepage" msgstr "Hiện đơn mua hàng quá hạn trên trang chủ" -#: common/models.py:2135 +#: common/models.py:2162 msgid "Show outstanding SOs" msgstr "Hiện đơn hàng vận chuyển nổi bật" -#: common/models.py:2136 +#: common/models.py:2163 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:2141 +#: common/models.py:2168 msgid "Show overdue SOs" msgstr "Hiện đơn vận chuyển quá hạn" -#: common/models.py:2142 +#: common/models.py:2169 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:2147 +#: common/models.py:2174 msgid "Show pending SO shipments" msgstr "Hiện đơn vận chuyển chờ xử lý" -#: common/models.py:2148 +#: common/models.py:2175 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:2153 +#: common/models.py:2180 msgid "Show News" msgstr "Hiện tin tức" -#: common/models.py:2154 +#: common/models.py:2181 msgid "Show news on the homepage" msgstr "Hiện tin tức trên trang chủ" -#: common/models.py:2159 +#: common/models.py:2186 msgid "Inline label display" msgstr "Hiển thị nhãn cùng dòng" -#: common/models.py:2161 +#: common/models.py:2188 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:2167 +#: common/models.py:2194 msgid "Default label printer" msgstr "Máy in tem nhãn mặc định" -#: common/models.py:2169 +#: common/models.py:2196 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:2175 +#: common/models.py:2202 msgid "Inline report display" msgstr "Hiển thị báo cáo cùng hàng" -#: common/models.py:2177 +#: common/models.py:2204 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:2183 +#: common/models.py:2210 msgid "Search Parts" msgstr "Tìm sản phẩm" -#: common/models.py:2184 +#: common/models.py:2211 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:2189 +#: common/models.py:2216 msgid "Search Supplier Parts" msgstr "Tìm sản phẩm nhà cung cấp" -#: common/models.py:2190 +#: common/models.py:2217 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:2195 +#: common/models.py:2222 msgid "Search Manufacturer Parts" msgstr "Tìm sản phẩm nhà sản xuất" -#: common/models.py:2196 +#: common/models.py:2223 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:2201 +#: common/models.py:2228 msgid "Hide Inactive Parts" msgstr "Ẩn sản phẩm ngừng hoạt động" -#: common/models.py:2202 +#: common/models.py:2229 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:2207 +#: common/models.py:2234 msgid "Search Categories" msgstr "Tìm kiếm danh mục" -#: common/models.py:2208 +#: common/models.py:2235 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:2213 +#: common/models.py:2240 msgid "Search Stock" msgstr "Tìm kiếm kho" -#: common/models.py:2214 +#: common/models.py:2241 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:2219 +#: common/models.py:2246 msgid "Hide Unavailable Stock Items" msgstr "Ẩn hàng hóa trong kho không có sẵn" -#: common/models.py:2221 +#: common/models.py:2248 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:2227 +#: common/models.py:2254 msgid "Search Locations" msgstr "Tìm kiếm vị trí" -#: common/models.py:2228 +#: common/models.py:2255 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:2233 +#: common/models.py:2260 msgid "Search Companies" msgstr "Tìm kiếm công ty" -#: common/models.py:2234 +#: common/models.py:2261 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:2239 +#: common/models.py:2266 msgid "Search Build Orders" msgstr "Tìm kiếm đặt hàng xây dựng" -#: common/models.py:2240 +#: common/models.py:2267 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:2245 +#: common/models.py:2272 msgid "Search Purchase Orders" msgstr "Tìm kiếm đơn đặt mua" -#: common/models.py:2246 +#: common/models.py:2273 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:2251 +#: common/models.py:2278 msgid "Exclude Inactive Purchase Orders" msgstr "Loại trừ đơn đặt mua không hoạt động" -#: common/models.py:2253 +#: common/models.py:2280 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:2259 +#: common/models.py:2286 msgid "Search Sales Orders" msgstr "Tìm đơn đặt hàng người mua" -#: common/models.py:2260 +#: common/models.py:2287 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:2265 +#: common/models.py:2292 msgid "Exclude Inactive Sales Orders" msgstr "Loại trừ đơn đặt hàng người mua không hoạt động" -#: common/models.py:2267 +#: common/models.py:2294 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:2273 +#: common/models.py:2300 msgid "Search Return Orders" msgstr "Tìm kiếm đơn hàng trả lại" -#: common/models.py:2274 +#: common/models.py:2301 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:2279 +#: common/models.py:2306 msgid "Exclude Inactive Return Orders" msgstr "Loại trừ đơn hàng trả lại không hoạt động" -#: common/models.py:2281 +#: common/models.py:2308 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:2287 +#: common/models.py:2314 msgid "Search Preview Results" msgstr "Kết quả xem trước tìm kiếm" -#: common/models.py:2289 +#: common/models.py:2316 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:2295 +#: common/models.py:2322 msgid "Regex Search" msgstr "Tìm kiếm biểu thức" -#: common/models.py:2296 +#: common/models.py:2323 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:2301 +#: common/models.py:2328 msgid "Whole Word Search" msgstr "Tìm phù hợp toàn bộ chữ" -#: common/models.py:2302 +#: common/models.py:2329 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:2307 +#: common/models.py:2334 msgid "Show Quantity in Forms" msgstr "Hiện số lượng trong biểu mẫu" -#: common/models.py:2308 +#: common/models.py:2335 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:2313 +#: common/models.py:2340 msgid "Escape Key Closes Forms" msgstr "Phím escape để đóng mẫu biểu" -#: common/models.py:2314 +#: common/models.py:2341 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:2319 +#: common/models.py:2346 msgid "Fixed Navbar" msgstr "Cố định điều hướng" -#: common/models.py:2320 +#: common/models.py:2347 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:2325 +#: common/models.py:2352 msgid "Date Format" msgstr "Định dạng ngày" -#: common/models.py:2326 +#: common/models.py:2353 msgid "Preferred format for displaying dates" msgstr "Định dạng ưa chuộng khi hiển thị ngày" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2366 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "Lập lịch sản phẩm" -#: common/models.py:2340 +#: common/models.py:2367 msgid "Display part scheduling information" msgstr "Hiển thị thông tin lịch sản phẩm" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2372 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "Kiểm kê sản phẩm" -#: common/models.py:2347 +#: common/models.py:2374 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:2353 +#: common/models.py:2380 msgid "Table String Length" msgstr "Độ dài chuỗi trong bảng" -#: common/models.py:2355 +#: common/models.py:2382 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:2361 +#: common/models.py:2388 msgid "Default part label template" msgstr "Mẫu nhãn sản phẩm mặc định" -#: common/models.py:2362 +#: common/models.py:2389 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:2367 +#: common/models.py:2394 msgid "Default stock item template" msgstr "Mẫu hàng hóa trong khi mặc định" -#: common/models.py:2369 +#: common/models.py:2396 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:2375 +#: common/models.py:2402 msgid "Default stock location label template" msgstr "Mẫu nhãn vị trí kho mặc định" -#: common/models.py:2377 +#: common/models.py:2404 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:2383 +#: common/models.py:2410 msgid "Receive error reports" msgstr "Nhận báo cáo lỗi" -#: common/models.py:2384 +#: common/models.py:2411 msgid "Receive notifications for system errors" msgstr "Nhận thông báo khi có lỗi hệ thống" -#: common/models.py:2389 +#: common/models.py:2416 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2417 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2460 msgid "Price break quantity" msgstr "Số lượng giá phá vỡ" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3503,23 +3536,23 @@ msgstr "Số lượng giá phá vỡ" msgid "Price" msgstr "Giá" -#: common/models.py:2441 +#: common/models.py:2468 msgid "Unit price at specified quantity" msgstr "Đơn vị giá theo số lượng cụ thể" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2639 common/models.py:2824 msgid "Endpoint" msgstr "Đầu mối" -#: common/models.py:2613 +#: common/models.py:2640 msgid "Endpoint at which this webhook is received" msgstr "Đầu mối tại điểm webhook được nhận" -#: common/models.py:2623 +#: common/models.py:2650 msgid "Name for this webhook" msgstr "Tên của webhook này" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3529,101 +3562,101 @@ msgstr "Tên của webhook này" msgid "Active" msgstr "Hoạt động" -#: common/models.py:2627 +#: common/models.py:2654 msgid "Is this webhook active" msgstr "Webhook có hoạt động không" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2670 users/models.py:148 msgid "Token" msgstr "Chữ ký số" -#: common/models.py:2644 +#: common/models.py:2671 msgid "Token for access" msgstr "Chữ ký số để truy cập" -#: common/models.py:2652 +#: common/models.py:2679 msgid "Secret" msgstr "Bí mật" -#: common/models.py:2653 +#: common/models.py:2680 msgid "Shared secret for HMAC" msgstr "Mã bí mật dùng chung cho HMAC" -#: common/models.py:2761 +#: common/models.py:2788 msgid "Message ID" msgstr "Mã Tin nhắn" -#: common/models.py:2762 +#: common/models.py:2789 msgid "Unique identifier for this message" msgstr "Định danh duy nhất cho tin nhắn này" -#: common/models.py:2770 +#: common/models.py:2797 msgid "Host" msgstr "Máy chủ" -#: common/models.py:2771 +#: common/models.py:2798 msgid "Host from which this message was received" msgstr "Mãy chủ từ tin nhắn này đã được nhận" -#: common/models.py:2779 +#: common/models.py:2806 msgid "Header" msgstr "Đầu mục" -#: common/models.py:2780 +#: common/models.py:2807 msgid "Header of this message" msgstr "Đầu mục tin nhắn" -#: common/models.py:2787 +#: common/models.py:2814 msgid "Body" msgstr "Thân" -#: common/models.py:2788 +#: common/models.py:2815 msgid "Body of this message" msgstr "Thân tin nhắn này" -#: common/models.py:2798 +#: common/models.py:2825 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:2803 +#: common/models.py:2830 msgid "Worked on" msgstr "Làm việc vào" -#: common/models.py:2804 +#: common/models.py:2831 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:2930 +#: common/models.py:2957 msgid "Id" msgstr "Mã" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2959 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "Tiêu đề" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2963 templates/js/translated/news.js:60 msgid "Published" msgstr "Đã công bố" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2965 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2967 templates/js/translated/news.js:52 msgid "Summary" msgstr "Tóm tắt" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Read" msgstr "Đọc" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Was this news item read?" msgstr "Tin này đã được đọc?" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2987 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3633,31 +3666,31 @@ msgstr "Tin này đã được đọc?" msgid "Image" msgstr "Hình ảnh" -#: common/models.py:2960 +#: common/models.py:2987 msgid "Image file" msgstr "Tệp ảnh" -#: common/models.py:3002 +#: common/models.py:3029 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:3021 +#: common/models.py:3048 msgid "Unit name" msgstr "Tên đơn vị" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "Biểu tượng" -#: common/models.py:3029 +#: common/models.py:3056 msgid "Optional unit symbol" msgstr "Biểu tượng đơn vị tùy chọn" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "Định nghĩa" -#: common/models.py:3037 +#: common/models.py:3064 msgid "Unit definition" msgstr "Định nghĩa đơn vị" @@ -3961,7 +3994,7 @@ msgid "Link to address information (external)" msgstr "Liên kết thông tin địa chỉ (bên ngoài)" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "Sản phẩm cơ bản" @@ -3972,7 +4005,7 @@ msgstr "Chọn sản phẩm" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3987,7 +4020,7 @@ msgid "Select manufacturer" msgstr "Chọn nhà sản xuất" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4022,9 +4055,9 @@ msgstr "Tên tham số" #: company/models.py:615 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2438 templates/js/translated/company.js:1156 +#: stock/models.py:2441 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1519 msgid "Value" msgstr "Giá trị" @@ -4033,7 +4066,7 @@ msgid "Parameter value" msgstr "Giá trị tham số" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4059,7 +4092,7 @@ msgstr "Sản phẩm nhà sản xuất đã liên kết phải tham chiếu vớ #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4076,7 +4109,7 @@ msgstr "Nhà cung cấp" msgid "Select supplier" msgstr "Chọn nhà cung cấp" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "Đơn vị quản lý kho nhà cung cấp" @@ -4093,13 +4126,13 @@ msgid "Supplier part description" msgstr "Mô tả sản phẩm nhà cung cấp" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:579 msgid "Note" msgstr "Ghi chú" @@ -4112,10 +4145,10 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "Thu phí tối thiểu (vd: phí kho bãi)" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 -#: templates/js/translated/stock.js:2387 +#: templates/js/translated/stock.js:2423 msgid "Packaging" msgstr "Đóng gói" @@ -4157,7 +4190,7 @@ msgstr "Sẵn hàng đã được cập nhật" 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:153 +#: company/serializers.py:155 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" @@ -4218,13 +4251,13 @@ msgstr "Xóa ảnh" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1100 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 #: templates/js/translated/return_order.js:296 #: templates/js/translated/sales_order.js:784 -#: templates/js/translated/stock.js:2923 +#: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:804 msgid "Customer" msgstr "Khách hàng" @@ -4429,8 +4462,9 @@ 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/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "Nhà cung cấp" @@ -4482,7 +4516,7 @@ msgstr "Địa chỉ" #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2243 +#: templates/js/translated/stock.js:2279 msgid "Supplier Part" msgstr "Sản phẩm nhà cung cấp" @@ -4528,7 +4562,7 @@ 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:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4577,15 +4611,17 @@ msgstr "Liên kết mã vạch đến hàng hóa nhà cung cấp" 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/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 -#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:193 msgid "Stock Items" msgstr "Hàng trong kho" @@ -4639,8 +4675,8 @@ msgstr "Nhãn" msgid "Label template file" msgstr "Tệp mẫu nhãn" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "Đã bật" @@ -4665,7 +4701,7 @@ msgstr "Chiều cao [mm]" msgid "Label height, specified in mm" msgstr "Chiều cao nhãn, tính theo mm" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "Mẫu tên tệp" @@ -4679,8 +4715,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "Truy vấn bộ lọc (dùng dấu phẩy ngăn cách các cặp key=value)" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "Bộ lọc" @@ -4821,7 +4857,7 @@ msgstr "Không tìm thấy đơn đặt mua phù hợp" #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1674 -#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "Đơn hàng" @@ -4830,7 +4866,7 @@ msgstr "Đơn hàng" #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 -#: templates/js/translated/stock.js:2905 +#: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "Đơn hàng trả lại" @@ -4838,11 +4874,11 @@ msgstr "Đơn hàng trả lại" msgid "Total price for this order" msgstr "Tổng tiền cho đơn hàng hàng" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "Tiền tệ đơn đặt hàng" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 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)" @@ -5029,9 +5065,9 @@ msgstr "Đã nhận" msgid "Number of items received" msgstr "Số mục đã nhận" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2274 +#: templates/js/translated/stock.js:2310 msgid "Purchase Price" msgstr "Giá mua" @@ -5084,8 +5120,8 @@ msgstr "Kiểm tra bởi" msgid "User who checked this shipment" msgstr "Người dùng đã kiểm tra vận chuyển này" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "Vận chuyển" @@ -5133,7 +5169,7 @@ msgstr "Không thể phân bổ hàng hóa vào một dòng mà không có sản 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:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "Số lượng phải là 1 cho hàng hóa sêri" @@ -5207,159 +5243,159 @@ msgstr "Kết quả cho hàng hóa dòng này" 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:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "Đơn đặt không thể bị hủy" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 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:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 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:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "Đơn đặt là không được mở" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "Tiền tệ giá mua" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "Sản phẩm nhà cung cấp phải được chỉ định" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "Đơn đặt mua phải được chỉ định" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "Nhà cung cấp phải phù hợp với đơn đặt mua" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "Đơn đặt mua phải phù hợp với nhà cung cấp" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "Mục dòng" -#: order/serializers.py:524 +#: order/serializers.py:546 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:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "Chọn vị trí đích cho hàng hóa đã nhận" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 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:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 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:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "Mã vạch" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "Mã vạch đã quét" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "Mã vạch đã được dùng" -#: order/serializers.py:610 +#: order/serializers.py:632 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:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "Dòng hàng hóa phải được cung cấp" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "Vị trí đích phải được chỉ ra" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "Giá trị mã vạch đã cung cấp phải duy nhất" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "Tiền tệ giá bán" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "Chưa cung cấp thông tin vận chuyển" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 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:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "Số lượng phải là số dương" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "Nhập số sê ri để phân bổ" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "Vận đơn đã được chuyển đi" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 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:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "Không tìm thấy số sê ri sau đây" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "Những số sê ri sau đây đã được phân bổ" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "Dòng riêng biệt đơn hàng trả lại" -#: order/serializers.py:1623 +#: order/serializers.py:1645 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:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "Line item đã nhận được" -#: order/serializers.py:1655 +#: order/serializers.py:1677 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:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "Tiền tệ giá đồng hạng" @@ -5733,7 +5769,7 @@ msgid "Pending Shipments" msgstr "Vận chuyển đang chờ xử lý" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "Chức năng" @@ -5763,12 +5799,12 @@ 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:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "ID sản phẩm" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "Tên sản phẩm" @@ -5780,12 +5816,12 @@ msgstr "Mô tả sản phẩm" #: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 -#: templates/js/translated/stock.js:1999 +#: templates/js/translated/stock.js:2035 msgid "IPN" msgstr "IPN" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "Phiên bản" @@ -5861,10 +5897,10 @@ msgstr "Tên cha" msgid "Category Path" msgstr "Đưỡng dẫn danh mục" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -5885,17 +5921,17 @@ msgstr "ID hàng hóa BOM" msgid "Parent IPN" msgstr "IPN cha" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3897 msgid "Part IPN" msgstr "IPN sản phẩm" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "Giá thấp nhất" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5973,8 +6009,8 @@ msgstr "Xác minh toàn bộ hóa đơn vật liệu" msgid "This option must be selected" msgstr "Tùy chọn này phải được chọn" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5982,12 +6018,17 @@ msgstr "Tùy chọn này phải được chọn" msgid "Category" msgstr "Danh mục" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: 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 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "Tổng số lượng" @@ -5995,7 +6036,7 @@ 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:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3841 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" @@ -6010,7 +6051,8 @@ msgstr "Danh mục sản phẩm" 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:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 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" @@ -6076,7 +6118,7 @@ msgstr "Sản phẩm với Tên, IPN và Duyệt lại đã tồn tại." 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:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3896 msgid "Part name" msgstr "Tên sản phẩm" @@ -6358,7 +6400,7 @@ msgstr "Tống số kho tại thời điểm kiểm kê" #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1732 -#: templates/js/translated/stock.js:2785 +#: templates/js/translated/stock.js:2821 msgid "Date" msgstr "Ngày" @@ -6410,586 +6452,602 @@ msgstr "Số sản phẩm đã được bao quát bởi kiểm kê" 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:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 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:3448 -msgid "Test with this name already exists for this part" -msgstr "Kiểm thử với tên này đã tồn tại cho sản phẩm này" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" +msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "Tên kiểm thử" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "Nhập tên cho kiểm thử" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "Mô tả kiểm thử" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "Nhập mô tả cho kiểm thử này" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "Bắt buộc" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "Kiểm thử này bắt buộc phải đạt?" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "Giá trị bắt buộc" -#: part/models.py:3496 +#: part/models.py:3505 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:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "Yêu cầu đính kèm" -#: part/models.py:3503 +#: part/models.py:3512 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:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "Tham số hộp kiểm tra không thể có đơn vị" -#: part/models.py:3555 +#: part/models.py:3564 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:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "Lựa chọn phải duy nhất" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "Tên tham số mẫu phải là duy nhất" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "Tên tham số" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "Đơn vị vật lý cho tham số này" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "Mô tả tham số" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "Ô lựa chọn" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "Tham số này có phải là hộp kiểm tra?" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "Lựa chọn" -#: part/models.py:3635 +#: part/models.py:3644 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:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "Lựa chọn sai cho giá trị tham số" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "Sản phẩm cha" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "Mẫu tham số" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "Dữ liệu" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "Giá trị tham số" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "Giá trị mặc định" -#: part/models.py:3847 +#: part/models.py:3856 msgid "Default Parameter Value" msgstr "Giá trị tham số mặc định" -#: part/models.py:3885 +#: part/models.py:3894 msgid "Part ID or part name" msgstr "Tên hoặc mã sản phẩm" -#: part/models.py:3886 +#: part/models.py:3895 msgid "Unique part ID value" msgstr "Giá trị mã sản phẩm duy nhất" -#: part/models.py:3888 +#: part/models.py:3897 msgid "Part IPN value" msgstr "Giá trị IPN sản phẩm" -#: part/models.py:3889 +#: part/models.py:3898 msgid "Level" msgstr "Cấp độ" -#: part/models.py:3889 +#: part/models.py:3898 msgid "BOM level" msgstr "Cấp độ BOM" -#: part/models.py:3979 +#: part/models.py:3988 msgid "Select parent part" msgstr "Chọn sản phẩm cha" -#: part/models.py:3989 +#: part/models.py:3998 msgid "Sub part" msgstr "Sản phẩm phụ" -#: part/models.py:3990 +#: part/models.py:3999 msgid "Select part to be used in BOM" msgstr "Chọn sản phẩm được dùng trong BOM" -#: part/models.py:4001 +#: part/models.py:4010 msgid "BOM quantity for this BOM item" msgstr "Số lượng BOM cho mục BOM này" -#: part/models.py:4007 +#: part/models.py:4016 msgid "This BOM item is optional" msgstr "Mục BOM này là tùy chọn" -#: part/models.py:4013 +#: part/models.py:4022 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:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4029 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "Dư thừa" -#: part/models.py:4021 +#: part/models.py:4030 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:4028 +#: part/models.py:4037 msgid "BOM item reference" msgstr "Tham chiếu mục BOM" -#: part/models.py:4036 +#: part/models.py:4045 msgid "BOM item notes" msgstr "Ghi chú mục BOM" -#: part/models.py:4042 +#: part/models.py:4051 msgid "Checksum" msgstr "Giá trị tổng kiểm" -#: part/models.py:4043 +#: part/models.py:4052 msgid "BOM line checksum" msgstr "Giá trị tổng kiểm dòng BOM" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4057 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "Đã xác minh" -#: part/models.py:4049 +#: part/models.py:4058 msgid "This BOM item has been validated" msgstr "Mục BOM này là hợp lệ" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4063 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:4055 +#: part/models.py:4064 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:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4069 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:4061 +#: part/models.py:4070 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:4146 stock/models.py:649 +#: part/models.py:4155 stock/models.py:649 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:4156 part/models.py:4158 +#: part/models.py:4165 part/models.py:4167 msgid "Sub part must be specified" msgstr "Sản phẩm phụ phải được chỉ định" -#: part/models.py:4298 +#: part/models.py:4307 msgid "BOM Item Substitute" msgstr "Sảm phẩm thay thế mục BOM" -#: part/models.py:4319 +#: part/models.py:4328 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:4332 +#: part/models.py:4341 msgid "Parent BOM item" msgstr "Hàng hóa BOM cha" -#: part/models.py:4340 +#: part/models.py:4349 msgid "Substitute part" msgstr "Sản phẩm thay thế" -#: part/models.py:4356 +#: part/models.py:4365 msgid "Part 1" msgstr "Sản phẩm 1" -#: part/models.py:4364 +#: part/models.py:4373 msgid "Part 2" msgstr "Sản phẩm 2" -#: part/models.py:4365 +#: part/models.py:4374 msgid "Select Related Part" msgstr "Chọn sản phẩm liên quan" -#: part/models.py:4384 +#: part/models.py:4393 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:4389 +#: part/models.py:4398 msgid "Duplicate relationship already exists" msgstr "Đã tồn tại mối quan hệ trùng lặp" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 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:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "Chưa chọn sản phẩm" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "Chọn danh mục" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "Sản phẩm gốc" -#: part/serializers.py:420 +#: 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:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "Sao chép ảnh" -#: part/serializers.py:426 +#: 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:432 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:433 +#: 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:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "Sao chép thông số" -#: part/serializers.py:440 +#: 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:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "Sao chép ghi chú" -#: part/serializers.py:447 +#: 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:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "Số liệu tồn kho ban đầu" -#: part/serializers.py:462 +#: part/serializers.py:480 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:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "Vị trí kho ban đầu" -#: part/serializers.py:470 +#: part/serializers.py:488 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:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "Chọn nhà cung cấp (hoặc để trống để bỏ qua)" -#: part/serializers.py:498 +#: part/serializers.py:516 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:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "Mã số nhà sản xuất" -#: part/serializers.py:515 +#: part/serializers.py:533 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:524 +#: part/serializers.py:542 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:535 +#: part/serializers.py:553 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:542 +#: part/serializers.py:560 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:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "Nhân bản sản phẩm" -#: part/serializers.py:816 +#: part/serializers.py:852 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:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "Số liệu kho ban đầu" -#: part/serializers.py:823 +#: part/serializers.py:859 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:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "Thông tin nhà cung cấp" -#: part/serializers.py:830 +#: part/serializers.py:866 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:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "Sao chép thông số nhóm hàng" -#: part/serializers.py:839 +#: part/serializers.py:875 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:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "Ảnh hiện có" -#: part/serializers.py:845 +#: part/serializers.py:881 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:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "Tệp hình ảnh không tồn tại" -#: part/serializers.py:1068 +#: part/serializers.py:1104 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:1078 +#: part/serializers.py:1114 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:1088 +#: part/serializers.py:1124 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:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "Ngoại trừ kho bên ngoài" -#: part/serializers.py:1095 +#: part/serializers.py:1131 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:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "Tạo báo cáo" -#: part/serializers.py:1101 +#: part/serializers.py:1137 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:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "Cập nhật sản phẩm" -#: part/serializers.py:1107 +#: part/serializers.py:1143 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:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "Chức năng kiểm kê chưa được bật" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "Giá trị tính toán ghi đè cho giá tối thiểu" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "Tiền tế giá tối thiểu" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "Giá trị tính toán ghi đè cho giá tối đa" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "Tiền tế giá tối đa" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "Cập nhật" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "Cập nhật giá cho sản phẩm này" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, 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:1303 +#: part/serializers.py:1339 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:1306 +#: part/serializers.py:1342 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:1632 +#: part/serializers.py:1678 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:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "Xóa dữ liệu đã tồn tại" -#: part/serializers.py:1641 +#: part/serializers.py:1687 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:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "Bao gồm thừa hưởng" -#: part/serializers.py:1647 +#: part/serializers.py:1693 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:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "Bỏ qua dòng không hợp lệ" -#: part/serializers.py:1653 +#: part/serializers.py:1699 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:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "Sao chép sản phẩm thay thế" -#: part/serializers.py:1659 +#: part/serializers.py:1705 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:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "Dọn dẹp BOM đang tồn tại" -#: part/serializers.py:1694 +#: part/serializers.py:1740 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:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "Chưa chỉ ra cột sản phẩm" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "Tìm thấy nhiều sản phẩm phù hợp" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "Không tìm thấy sản phẩm nào" -#: part/serializers.py:1774 +#: part/serializers.py:1820 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:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "Chưa cung cấp số lượng" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "Số lượng không hợp lệ" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "Buộc phải nhập ít nhất một mục BOM" @@ -7147,7 +7205,7 @@ 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 #: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/stock.js:2179 users/models.py:191 +#: templates/js/translated/stock.js:2215 users/models.py:191 msgid "Stocktake" msgstr "Kiểm kê" @@ -7221,7 +7279,7 @@ msgid "Validate BOM" msgstr "Xác minh BOM" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "Thêm mục BOM" @@ -7405,7 +7463,7 @@ msgstr "Phân bổ đến đơn đặt bản dựng" msgid "Allocated to Sales Orders" msgstr "Phân bổ đến đơn bán hàng" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "Có thể dựng" @@ -7509,7 +7567,7 @@ msgstr "Biến thể" #: templates/InvenTree/settings/sidebar.html:51 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 -#: templates/js/translated/stock.js:2033 templates/navbar.html:31 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 msgid "Stock" msgstr "Kiện hàng" @@ -7555,7 +7613,7 @@ msgstr "Sửa" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 -#: templates/js/translated/stock.js:2209 +#: templates/js/translated/stock.js:2245 msgid "Last Updated" msgstr "Cập nhật lần cuối" @@ -7999,7 +8057,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:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "Ngang" @@ -8307,16 +8365,16 @@ msgstr "" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 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:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, 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/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "Báo cáo kiểm tra" @@ -8336,103 +8394,111 @@ msgstr "Pháp lý" msgid "Letter" msgstr "Thư" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "Tên mẫu" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "Tệp mẫu báo cáo" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "Mô tả tệp mẫu báo cáo" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "Số phiên bản báo cáo (tự động tăng)" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "Khổ giấy cho báo cáo PDF" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "Tạo báo cáo theo hướng ngang" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "Quy tắc sinh tên tệp báo cáo" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "Mẫu báo cáo đang bật" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "Truy vấn bộ lọc hàng trong kho (dùng dấu phẩy liệt kê các cặp key=value)" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "Bao gồm các đợt kiểm tra đã lắp đặt" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "Bao gồm kết quả kiểm tra cho hàng trong kho được cài đặt bên trong hàng hóa đã lắp ráp" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "Dựng bộ lọc" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "Dựng bộ lọc truy vấn (dùng dấu phẩy liệt kê các cặp key=value" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "Bộ lọc sản phẩm" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "Bộ lọc truy vấn sản phẩm (dùng dấu phẩy liệt kê các cặp key=value" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "Bộ lọc truy vấn đơn đặt mua" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "Bộ lọc truy vấn đơn hàng bán" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "Bộ lọc truy vấn đơn hàng trả lại" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" msgstr "Mẫu trích" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "Tệp báo cáo mẫu" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "Mô tả tệp báo cáo mẫu" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" msgstr "Tài sản" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "Tệp báo cáo tài sản" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "Mô tả tệp báo cáo tài sản" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "bộ lọc truy vấn vị trí kho (dùng dấu phẩy liệt kê các cặp key=value)" @@ -8499,12 +8565,12 @@ msgid "Test Results" msgstr "Kết quả kiểm tra" #: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1492 msgid "Test" msgstr "Thử nghiệm" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Result" msgstr "Kết quả" @@ -8531,7 +8597,7 @@ msgstr "Mục đã cài đặt" #: report/templates/report/inventree_test_report_base.html:168 #: stock/admin.py:162 templates/js/translated/stock.js:700 -#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110 msgid "Serial" msgstr "Sê-ri" @@ -8615,7 +8681,7 @@ msgstr "Xóa khi thiếu hụt" #: stock/admin.py:256 stock/models.py:886 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2193 users/models.py:113 +#: templates/js/translated/stock.js:2229 users/models.py:113 msgid "Expiry Date" msgstr "Ngày hết hạn" @@ -8713,7 +8779,7 @@ msgstr "Chọn chủ sở hữu" 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:174 templates/js/translated/stock.js:2745 +#: stock/models.py:174 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "Bên ngoài" @@ -8722,7 +8788,7 @@ msgstr "Bên ngoài" msgid "This is an external stock location" msgstr "Đây là vị trí kho bên ngoài" -#: stock/models.py:181 templates/js/translated/stock.js:2754 +#: stock/models.py:181 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "Loại vị trí" @@ -8739,7 +8805,7 @@ msgstr "Bạn không thể chuyển đổi vị trí kho hàng này thành cấu 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:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:290 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" @@ -8784,7 +8850,7 @@ msgstr "Chọn sản phẩm nhà cung cấp khớp với hàng hóa trong kho n msgid "Where is this stock item located?" msgstr "Hàng trong kho này được đặt ở đâu?" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1351 msgid "Packaging this stock item is stored in" msgstr "Đóng gói hàng hóa này được lưu trữ lại" @@ -8796,7 +8862,7 @@ msgstr "Mục này đã được cài đặt trong mục khác?" msgid "Serial number for this item" msgstr "Số sê ri cho mục này" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1334 msgid "Batch code for this stock item" msgstr "Mã lô cho hàng trong kho này" @@ -8873,7 +8939,7 @@ msgstr "Số sêri phải là một danh sách dãy số nguyên" msgid "Quantity does not match serial numbers" msgstr "Số lượng không khớp với số sêri" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:529 msgid "Serial numbers already exist" msgstr "Số sêri đã tồn tại" @@ -8905,7 +8971,7 @@ msgstr "Hàng trong kho hiện đang sản xuất" msgid "Serialized stock cannot be merged" msgstr "Không thể hợp nhất kho nối tiếp" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1240 msgid "Duplicate stock items" msgstr "Mặt hàng trùng lặp" @@ -8929,207 +8995,236 @@ msgstr "Không thể xóa mặt hàng không ở trong kho" msgid "Entry notes" msgstr "Ghi chú đầu vào" -#: stock/models.py:2399 +#: stock/models.py:2402 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:2405 +#: stock/models.py:2408 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:2432 +#: stock/models.py:2435 msgid "Test result" msgstr "Kết quả kiểm thử" -#: stock/models.py:2439 +#: stock/models.py:2442 msgid "Test output value" msgstr "Giá trị đầu ra kiểm thử" -#: stock/models.py:2447 +#: stock/models.py:2450 msgid "Test result attachment" msgstr "Đính kèm kết quả kiểm thử" -#: stock/models.py:2451 +#: stock/models.py:2454 msgid "Test notes" msgstr "Ghi chú kiểm thử" -#: stock/serializers.py:96 +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "" + +#: stock/models.py:2463 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2469 +msgid "Started" +msgstr "" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:100 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:119 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 +#: stock/serializers.py:151 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:184 msgid "Serial number is too large" msgstr "Số sêri quá lớn" -#: stock/serializers.py:267 +#: stock/serializers.py:282 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:380 +#: stock/serializers.py:402 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:442 +#: stock/serializers.py:464 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:455 +#: stock/serializers.py:477 #, 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:462 +#: stock/serializers.py:484 msgid "Enter serial numbers for new items" msgstr "Điền số sêri cho hàng hóa mới" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 msgid "Destination stock location" msgstr "Vị trí kho đích" -#: stock/serializers.py:480 +#: stock/serializers.py:502 msgid "Optional note field" msgstr "Trường ghi chú tùy chọn" -#: stock/serializers.py:490 +#: stock/serializers.py:512 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:545 +#: stock/serializers.py:567 msgid "Select stock item to install" msgstr "Chọn mặt hàng để lắp đặt" -#: stock/serializers.py:552 +#: stock/serializers.py:574 msgid "Quantity to Install" msgstr "Số lượng để cài đặt" -#: stock/serializers.py:553 +#: stock/serializers.py:575 msgid "Enter the quantity of items to install" msgstr "Nhập số lượng hàng hóa để cài đặt" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 msgid "Add transaction note (optional)" msgstr "Thêm ghi chú giao dịch (tùy chọn)" -#: stock/serializers.py:566 +#: stock/serializers.py:588 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:574 +#: stock/serializers.py:596 msgid "Stock item is unavailable" msgstr "Mặt hàng không khả dụng" -#: stock/serializers.py:581 +#: stock/serializers.py:607 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:593 +#: stock/serializers.py:620 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:628 +#: stock/serializers.py:655 msgid "Destination location for uninstalled item" msgstr "Vị trí đích cho hàng hóa bị gỡ bỏ" -#: stock/serializers.py:663 +#: stock/serializers.py:690 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:676 +#: stock/serializers.py:703 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:693 +#: stock/serializers.py:720 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:724 +#: stock/serializers.py:751 msgid "Destination location for returned item" msgstr "Vị trí đích dành cho hàng hóa trả lại" -#: stock/serializers.py:761 +#: stock/serializers.py:788 msgid "Select stock items to change status" msgstr "Chọn mặt hàng để đổi trạng thái" -#: stock/serializers.py:767 +#: stock/serializers.py:794 msgid "No stock items selected" msgstr "Không có mặt hàng nào được chọn" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "Kho phụ" -#: stock/serializers.py:1036 +#: stock/serializers.py:1069 msgid "Part must be salable" msgstr "Sản phẩm phải có thể bán được" -#: stock/serializers.py:1040 +#: stock/serializers.py:1073 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:1044 +#: stock/serializers.py:1077 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:1068 +#: stock/serializers.py:1101 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:1074 +#: stock/serializers.py:1107 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:1082 +#: stock/serializers.py:1115 msgid "Stock assignment notes" msgstr "Ghi chú phân bổ kho" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1125 stock/serializers.py:1379 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:1171 +#: stock/serializers.py:1204 msgid "Stock merging notes" msgstr "Ghi chú gộp kho" -#: stock/serializers.py:1176 +#: stock/serializers.py:1209 msgid "Allow mismatched suppliers" msgstr "Cho phép nhiều nhà cung không khớp" -#: stock/serializers.py:1177 +#: stock/serializers.py:1210 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:1182 +#: stock/serializers.py:1215 msgid "Allow mismatched status" msgstr "Cho phép trạng thái không khớp" -#: stock/serializers.py:1183 +#: stock/serializers.py:1216 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:1193 +#: stock/serializers.py:1226 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:1260 +#: stock/serializers.py:1293 msgid "No Change" msgstr "" -#: stock/serializers.py:1289 +#: stock/serializers.py:1322 msgid "StockItem primary key value" msgstr "Giá trị khóa chính mặt hàng" -#: stock/serializers.py:1308 +#: stock/serializers.py:1341 msgid "Stock item status code" msgstr "Mã trạng thái mặt hàng" -#: stock/serializers.py:1336 +#: stock/serializers.py:1369 msgid "Stock transaction notes" msgstr "Ghi chú giao dịch kho" @@ -9154,7 +9249,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:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 msgid "Delete Test Data" msgstr "Xóa dữ liệu báo cáo kiểm thử" @@ -9170,15 +9265,15 @@ msgstr "Ghi chú tại kho hàng" msgid "Installed Stock Items" msgstr "Hàng hóa đã lắp đặt" -#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 msgid "Install Stock Item" msgstr "Lắp đặt hàng hóa trong kho" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:274 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:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 msgid "Add Test Result" msgstr "" @@ -9201,17 +9296,17 @@ msgid "Stock adjustment actions" msgstr "Chức năng điều chỉnh kho" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 msgid "Count stock" msgstr "Đếm hàng" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:1803 msgid "Add stock" msgstr "Thêm hàng" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1776 +#: templates/js/translated/stock.js:1812 msgid "Remove stock" msgstr "Xóa hàng hóa" @@ -9220,12 +9315,12 @@ msgid "Serialize stock" msgstr "Sắp xếp hàng hóa" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 msgid "Transfer stock" msgstr "Chuyển giao hàng" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1884 msgid "Assign to customer" msgstr "Chỉ định cho khách hàng" @@ -9364,7 +9459,7 @@ msgid "No stocktake performed" msgstr "Chưa thực hiện kiểm kê" #: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1915 +#: templates/js/translated/stock.js:1951 msgid "stock item" msgstr "" @@ -9469,7 +9564,7 @@ msgid "New Location" msgstr "Vị trí mới" #: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2536 +#: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" @@ -10063,7 +10158,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:37 msgid "New Location Type" msgstr "Loại vị trí mới" @@ -10120,7 +10215,7 @@ msgstr "Thiết lập đơn hàng bán" msgid "Stock Settings" msgstr "Cài đặt kho hàng" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:33 msgid "Stock Location Types" msgstr "Loại ví trí kho" @@ -10662,7 +10757,7 @@ msgid "The following parts are low on required stock" msgstr "Sản phẩm sau còn ít hàng trong kho yêu cầu" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "Số lượng bắt buộc" @@ -10676,7 +10771,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:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "Số lượng tối thiểu" @@ -11051,62 +11146,66 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "" @@ -11389,7 +11488,7 @@ msgstr "" #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 -#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11401,7 +11500,7 @@ msgstr "" msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006 +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" @@ -11449,29 +11548,29 @@ msgstr "" msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "" @@ -11804,15 +11903,15 @@ msgstr "" msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3087 +#: templates/js/translated/forms.js:3103 msgid "Select Columns" msgstr "" @@ -12289,7 +12388,7 @@ msgid "No category" msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 -#: templates/js/translated/stock.js:2633 +#: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" @@ -12301,7 +12400,7 @@ msgstr "" msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" @@ -12313,64 +12412,64 @@ msgstr "" msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" @@ -12907,7 +13006,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1737 +#: templates/js/translated/stock.js:1773 msgid "Shipped to customer" msgstr "" @@ -13165,7 +13264,7 @@ msgstr "" msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" @@ -13189,248 +13288,256 @@ msgstr "" msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1440 +#: templates/js/translated/stock.js:1447 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1443 +#: templates/js/translated/stock.js:1450 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1466 +#: templates/js/translated/stock.js:1473 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1530 +#: templates/js/translated/stock.js:1537 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1677 +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1733 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1729 +#: templates/js/translated/stock.js:1765 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1769 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1741 +#: templates/js/translated/stock.js:1777 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1747 +#: templates/js/translated/stock.js:1783 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1839 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1848 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:1897 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1916 +#: templates/js/translated/stock.js:1952 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1921 +#: templates/js/translated/stock.js:1957 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1932 +#: templates/js/translated/stock.js:1968 msgid "Stock Actions" msgstr "" -#: templates/js/translated/stock.js:1976 +#: templates/js/translated/stock.js:2012 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2054 +#: templates/js/translated/stock.js:2090 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2059 +#: templates/js/translated/stock.js:2095 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2062 +#: templates/js/translated/stock.js:2098 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2065 +#: templates/js/translated/stock.js:2101 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2067 +#: templates/js/translated/stock.js:2103 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2069 +#: templates/js/translated/stock.js:2105 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2072 +#: templates/js/translated/stock.js:2108 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2074 +#: templates/js/translated/stock.js:2110 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2114 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2080 +#: templates/js/translated/stock.js:2116 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2085 +#: templates/js/translated/stock.js:2121 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2087 +#: templates/js/translated/stock.js:2123 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2089 +#: templates/js/translated/stock.js:2125 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2129 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2258 +#: templates/js/translated/stock.js:2294 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2305 +#: templates/js/translated/stock.js:2341 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2433 +#: templates/js/translated/stock.js:2469 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2573 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2692 +#: templates/js/translated/stock.js:2728 msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2810 +#: templates/js/translated/stock.js:2846 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2814 +#: templates/js/translated/stock.js:2850 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:2862 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2848 +#: templates/js/translated/stock.js:2884 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2865 +#: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2880 +#: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2897 +#: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2914 +#: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3005 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2977 +#: templates/js/translated/stock.js:3013 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:3049 +#: templates/js/translated/stock.js:3085 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139 +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:3161 +#: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:3182 +#: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:3183 +#: 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:3185 +#: 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:3186 +#: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:3187 +#: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:3188 +#: 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:3201 +#: templates/js/translated/stock.js:3237 msgid "Select part to install" msgstr "" -#: templates/js/translated/stock.js:3264 +#: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" msgstr "" -#: templates/js/translated/stock.js:3277 +#: templates/js/translated/stock.js:3313 msgid "Selected stock items" msgstr "" -#: templates/js/translated/stock.js:3281 +#: templates/js/translated/stock.js:3317 msgid "Change Stock Status" msgstr "" diff --git a/InvenTree/locale/zh/LC_MESSAGES/django.po b/InvenTree/locale/zh/LC_MESSAGES/django.po index 380b4d78d5..610eb8a205 100644 --- a/InvenTree/locale/zh/LC_MESSAGES/django.po +++ b/InvenTree/locale/zh/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 04:05+0000\n" -"PO-Revision-Date: 2024-02-28 07:23\n" +"POT-Creation-Date: 2024-03-19 01:26+0000\n" +"PO-Revision-Date: 2024-03-19 11:52\n" "Last-Translator: \n" "Language-Team: Chinese Traditional\n" "Language: zh_TW\n" @@ -28,25 +28,25 @@ msgstr "使用者沒有檢視此模型的權限" #: InvenTree/conversion.py:160 #, python-brace-format msgid "Invalid unit provided ({unit})" -msgstr "" +msgstr "提供的單位不正確 ({unit})" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 msgid "No value provided" msgstr "未提供值" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" -msgstr "" +msgstr "無法將 {original} 轉換為 {unit}" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 msgid "Invalid quantity supplied" -msgstr "" +msgstr "提供的數量無效" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, python-brace-format msgid "Invalid quantity supplied ({exc})" -msgstr "" +msgstr "提供的數量無效 ({exc})" #: InvenTree/exceptions.py:109 msgid "Error details can be found in the admin panel" @@ -64,18 +64,18 @@ msgstr "輸入日期" #: order/templates/order/so_sidebar.html:17 part/admin.py:59 #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 -#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/admin.py:226 stock/models.py:2335 stock/models.py:2454 +#: stock/serializers.py:501 stock/serializers.py:659 stock/serializers.py:755 +#: stock/serializers.py:805 stock/serializers.py:1114 stock/serializers.py:1203 +#: stock/serializers.py:1368 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 #: templates/js/translated/return_order.js:776 #: templates/js/translated/sales_order.js:1067 #: templates/js/translated/sales_order.js:1982 -#: templates/js/translated/stock.js:1526 templates/js/translated/stock.js:2391 +#: templates/js/translated/stock.js:1533 templates/js/translated/stock.js:2427 msgid "Notes" msgstr "備註" @@ -132,42 +132,42 @@ msgstr "所提供的Email網域尚未被核准。" msgid "Registration is disabled." msgstr "註冊功能已停用。" -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "提供的數量無效" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "序號為空白" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "重複的序號" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, python-brace-format msgid "Invalid group range: {group}" -msgstr "" +msgstr "無效的群組範圍:{group}" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, python-brace-format msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" -msgstr "" +msgstr "群組範圍 {group} 超過允許的數量({expected_quantity})" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, python-brace-format msgid "Invalid group sequence: {group}" -msgstr "" +msgstr "無效的群組序列:{group}" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "找不到序號" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" -msgstr "" +msgstr "不重複的序號數量({len(serials)})必須和總數量({expected_quantity})相同" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "從這個值中移除HTML標籤" @@ -203,138 +203,142 @@ msgstr "遠端伺服器回傳了空白回應" msgid "Supplied URL is not a valid image file" msgstr "提供的URL不是有效的圖片檔案" -#: InvenTree/locales.py:16 +#: InvenTree/locales.py:18 msgid "Bulgarian" -msgstr "" +msgstr "保加利亞文" -#: InvenTree/locales.py:17 +#: InvenTree/locales.py:19 msgid "Czech" msgstr "捷克文" -#: InvenTree/locales.py:18 +#: InvenTree/locales.py:20 msgid "Danish" msgstr "丹麥文" -#: InvenTree/locales.py:19 +#: InvenTree/locales.py:21 msgid "German" msgstr "德文" -#: InvenTree/locales.py:20 +#: InvenTree/locales.py:22 msgid "Greek" msgstr "希臘文" -#: InvenTree/locales.py:21 +#: InvenTree/locales.py:23 msgid "English" msgstr "英文" -#: InvenTree/locales.py:22 +#: InvenTree/locales.py:24 msgid "Spanish" msgstr "西班牙文" -#: InvenTree/locales.py:23 +#: InvenTree/locales.py:25 msgid "Spanish (Mexican)" msgstr "西班牙文(墨西哥)" -#: InvenTree/locales.py:24 +#: InvenTree/locales.py:26 msgid "Farsi / Persian" msgstr "波斯語" -#: InvenTree/locales.py:25 +#: InvenTree/locales.py:27 msgid "Finnish" msgstr "芬蘭文" -#: InvenTree/locales.py:26 +#: InvenTree/locales.py:28 msgid "French" msgstr "法文" -#: InvenTree/locales.py:27 +#: InvenTree/locales.py:29 msgid "Hebrew" msgstr "希伯來文" -#: InvenTree/locales.py:28 +#: InvenTree/locales.py:30 msgid "Hindi" -msgstr "" +msgstr "印地文" -#: InvenTree/locales.py:29 +#: InvenTree/locales.py:31 msgid "Hungarian" msgstr "匈牙利文" -#: InvenTree/locales.py:30 +#: InvenTree/locales.py:32 msgid "Italian" msgstr "義大利文" -#: InvenTree/locales.py:31 +#: InvenTree/locales.py:33 msgid "Japanese" msgstr "日文" -#: InvenTree/locales.py:32 +#: InvenTree/locales.py:34 msgid "Korean" msgstr "韓文" -#: InvenTree/locales.py:33 +#: InvenTree/locales.py:35 +msgid "Latvian" +msgstr "" + +#: InvenTree/locales.py:36 msgid "Dutch" msgstr "荷蘭文" -#: InvenTree/locales.py:34 +#: InvenTree/locales.py:37 msgid "Norwegian" msgstr "挪威文" -#: InvenTree/locales.py:35 +#: InvenTree/locales.py:38 msgid "Polish" msgstr "波蘭文" -#: InvenTree/locales.py:36 +#: InvenTree/locales.py:39 msgid "Portuguese" msgstr "葡萄牙文" -#: InvenTree/locales.py:37 +#: InvenTree/locales.py:40 msgid "Portuguese (Brazilian)" msgstr "葡萄牙文(巴西)" -#: InvenTree/locales.py:38 +#: InvenTree/locales.py:41 msgid "Russian" msgstr "俄文" -#: InvenTree/locales.py:39 +#: InvenTree/locales.py:42 msgid "Slovak" -msgstr "" +msgstr "斯洛伐克文" -#: InvenTree/locales.py:40 +#: InvenTree/locales.py:43 msgid "Slovenian" msgstr "斯洛維尼亞文" -#: InvenTree/locales.py:41 +#: InvenTree/locales.py:44 msgid "Serbian" -msgstr "" +msgstr "塞爾維亞文" -#: InvenTree/locales.py:42 +#: InvenTree/locales.py:45 msgid "Swedish" msgstr "瑞典文" -#: InvenTree/locales.py:43 +#: InvenTree/locales.py:46 msgid "Thai" msgstr "泰文" -#: InvenTree/locales.py:44 +#: InvenTree/locales.py:47 msgid "Turkish" msgstr "土耳其文" -#: InvenTree/locales.py:45 +#: InvenTree/locales.py:48 msgid "Vietnamese" msgstr "越南文" -#: InvenTree/locales.py:46 +#: InvenTree/locales.py:49 msgid "Chinese (Simplified)" msgstr "中文(简体)" -#: InvenTree/locales.py:47 +#: InvenTree/locales.py:50 msgid "Chinese (Traditional)" msgstr "中文(繁體)" #: InvenTree/magic_login.py:28 #, python-brace-format msgid "[{site_name}] Log in to the app" -msgstr "" +msgstr "[{site_name}] 登入 App" #: InvenTree/magic_login.py:38 company/models.py:132 #: company/templates/company/company_base.html:132 @@ -345,7 +349,7 @@ msgstr "Email" #: InvenTree/models.py:107 msgid "Error running plugin validation" -msgstr "" +msgstr "驗證外掛程式時發生錯誤" #: InvenTree/models.py:162 msgid "Metadata must be a python dict object" @@ -391,7 +395,7 @@ msgstr "缺少檔案" msgid "Missing external link" msgstr "缺少外部連結" -#: InvenTree/models.py:559 stock/models.py:2446 +#: InvenTree/models.py:559 stock/models.py:2449 #: templates/js/translated/attachment.js:119 #: templates/js/translated/attachment.js:326 msgid "Attachment" @@ -401,7 +405,7 @@ msgstr "附件" msgid "Select file to attach" msgstr "選擇附件" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2961 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -432,13 +436,13 @@ msgstr "註解" msgid "File comment" msgstr "檔案註解" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2437 +#: common/models.py:2438 common/models.py:2662 common/models.py:2663 +#: common/models.py:2908 common/models.py:2909 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 -#: templates/js/translated/stock.js:3000 users/models.py:100 +#: templates/js/translated/stock.js:3036 users/models.py:100 msgid "User" msgstr "使用者" @@ -479,10 +483,10 @@ msgstr "同一個上層元件下不能有重複的名字" msgid "Invalid choice" msgstr "無效的選項" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2649 common/models.py:3047 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -495,7 +499,7 @@ msgstr "無效的選項" #: templates/js/translated/company.js:1155 #: templates/js/translated/company.js:1403 templates/js/translated/part.js:1186 #: templates/js/translated/part.js:1474 templates/js/translated/part.js:1610 -#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2680 +#: templates/js/translated/part.js:2749 templates/js/translated/stock.js:2716 msgid "Name" msgstr "名稱" @@ -506,10 +510,10 @@ msgstr "名稱" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -523,7 +527,7 @@ msgstr "名稱" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -531,8 +535,8 @@ msgstr "名稱" #: templates/js/translated/return_order.js:314 #: templates/js/translated/sales_order.js:802 #: templates/js/translated/sales_order.js:1812 -#: templates/js/translated/stock.js:1505 templates/js/translated/stock.js:2021 -#: templates/js/translated/stock.js:2712 templates/js/translated/stock.js:2795 +#: templates/js/translated/stock.js:1512 templates/js/translated/stock.js:2057 +#: templates/js/translated/stock.js:2748 templates/js/translated/stock.js:2831 msgid "Description" msgstr "描述" @@ -545,7 +549,7 @@ msgid "parent" msgstr "上層元素" #: InvenTree/models.py:916 templates/js/translated/part.js:2794 -#: templates/js/translated/stock.js:2721 +#: templates/js/translated/stock.js:2757 msgid "Path" msgstr "路徑" @@ -581,7 +585,7 @@ msgstr "伺服器錯誤" msgid "An error has been logged by the server." msgstr "伺服器紀錄了一個錯誤。" -#: InvenTree/serializers.py:62 part/models.py:4134 +#: InvenTree/serializers.py:62 part/models.py:4143 msgid "Must be a valid number" msgstr "必須是有效的數字" @@ -596,89 +600,89 @@ msgstr "貨幣" msgid "Select currency from available options" msgstr "從可用選項中選擇貨幣" -#: InvenTree/serializers.py:436 +#: InvenTree/serializers.py:441 msgid "You do not have permission to change this user role." -msgstr "" +msgstr "您沒有更改這個使用者角色的權限" -#: InvenTree/serializers.py:448 +#: InvenTree/serializers.py:453 msgid "Only superusers can create new users" -msgstr "" +msgstr "只有管理員帳戶可以建立新的使用者" -#: InvenTree/serializers.py:467 +#: InvenTree/serializers.py:472 msgid "Your account has been created." -msgstr "" +msgstr "您的帳號已經建立完成。" -#: InvenTree/serializers.py:469 +#: InvenTree/serializers.py:474 msgid "Please use the password reset function to login" -msgstr "" +msgstr "請使用重設密碼功能來登入" -#: InvenTree/serializers.py:476 +#: InvenTree/serializers.py:481 msgid "Welcome to InvenTree" -msgstr "" +msgstr "歡迎使用 InvenTree" -#: InvenTree/serializers.py:537 +#: InvenTree/serializers.py:542 msgid "Filename" msgstr "檔案名稱" -#: InvenTree/serializers.py:571 +#: InvenTree/serializers.py:576 msgid "Invalid value" msgstr "無效的值" -#: InvenTree/serializers.py:591 +#: InvenTree/serializers.py:596 msgid "Data File" msgstr "資料檔" -#: InvenTree/serializers.py:592 +#: InvenTree/serializers.py:597 msgid "Select data file for upload" msgstr "選擇要上傳的資料檔案" -#: InvenTree/serializers.py:609 +#: InvenTree/serializers.py:614 msgid "Unsupported file type" msgstr "不支援的檔案類型" -#: InvenTree/serializers.py:615 +#: InvenTree/serializers.py:620 msgid "File is too large" msgstr "檔案大小過大" -#: InvenTree/serializers.py:636 +#: InvenTree/serializers.py:641 msgid "No columns found in file" msgstr "檔案中找不到欄位" -#: InvenTree/serializers.py:639 +#: InvenTree/serializers.py:644 msgid "No data rows found in file" msgstr "檔案中找不到資料列" -#: InvenTree/serializers.py:752 +#: InvenTree/serializers.py:757 msgid "No data rows provided" msgstr "沒有提供資料列" -#: InvenTree/serializers.py:755 +#: InvenTree/serializers.py:760 msgid "No data columns supplied" msgstr "沒有提供資料欄位" -#: InvenTree/serializers.py:822 +#: InvenTree/serializers.py:827 #, python-brace-format msgid "Missing required column: '{name}'" msgstr "找不到必須的欄位: 「{name}」" -#: InvenTree/serializers.py:831 +#: InvenTree/serializers.py:836 #, python-brace-format msgid "Duplicate column: '{col}'" msgstr "重複的欄位:「{col}」" -#: InvenTree/serializers.py:854 +#: InvenTree/serializers.py:859 msgid "Remote Image" -msgstr "" +msgstr "遠端圖片" -#: InvenTree/serializers.py:855 +#: InvenTree/serializers.py:860 msgid "URL of remote image file" msgstr "遠端圖片的URL" -#: InvenTree/serializers.py:873 +#: InvenTree/serializers.py:878 msgid "Downloading images from remote URL is not enabled" msgstr "尚未啟用從遠端URL下載圖片" -#: InvenTree/status.py:66 part/serializers.py:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "背景工作程式檢查失敗" @@ -818,7 +822,7 @@ msgstr "從上層元素分拆" msgid "Split child item" msgstr "分拆下層元素" -#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1819 +#: InvenTree/status_codes.py:120 templates/js/translated/stock.js:1855 msgid "Merged stock items" msgstr "已合併的庫存項目" @@ -838,7 +842,7 @@ msgstr "工單產出已完成" msgid "Build order output rejected" msgstr "工單產出已拒絕" -#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1725 +#: InvenTree/status_codes.py:129 templates/js/translated/stock.js:1761 msgid "Consumed by build order" msgstr "被工單消耗的" @@ -888,11 +892,11 @@ msgstr "拒絕" #: InvenTree/templatetags/inventree_extras.py:183 msgid "Unknown database" -msgstr "" +msgstr "未知的資料庫" #: InvenTree/validators.py:31 InvenTree/validators.py:33 msgid "Invalid physical unit" -msgstr "" +msgstr "無效的物理單位" #: InvenTree/validators.py:39 msgid "Not a valid currency code" @@ -938,14 +942,14 @@ msgstr "關於InvenTree" msgid "Build must be cancelled before it can be deleted" msgstr "工單必須被取消才能被刪除" -#: build/api.py:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "耗材" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -957,10 +961,10 @@ msgstr "非必須項目" #: build/api.py:283 templates/js/translated/table_filters.js:408 #: templates/js/translated/table_filters.js:579 msgid "Tracked" -msgstr "" +msgstr "追蹤中" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -985,7 +989,7 @@ msgstr "可用數量" #: report/templates/report/inventree_build_order_base.html:105 #: templates/email/build_order_completed.html:16 #: templates/email/overdue_build_order.html:15 -#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2856 +#: templates/js/translated/build.js:972 templates/js/translated/stock.js:2892 msgid "Build Order" msgstr "生產工單" @@ -1006,7 +1010,7 @@ msgstr "無效的上層生產工單選擇" #: build/models.py:127 msgid "Build order part cannot be changed" -msgstr "" +msgstr "無法更改生產工單" #: build/models.py:173 msgid "Build Order Reference" @@ -1014,7 +1018,7 @@ msgstr "生產工單代號" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1044,11 +1048,11 @@ msgstr "這張生產工單對應的上層生產工單" #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1059,7 +1063,7 @@ msgstr "這張生產工單對應的上層生產工單" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:267 stock/serializers.py:689 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1086,9 +1090,9 @@ msgstr "這張生產工單對應的上層生產工單" #: templates/js/translated/sales_order.js:1598 #: templates/js/translated/sales_order.js:1796 #: templates/js/translated/stock.js:676 templates/js/translated/stock.js:842 -#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1960 -#: templates/js/translated/stock.js:2821 templates/js/translated/stock.js:3054 -#: templates/js/translated/stock.js:3200 +#: templates/js/translated/stock.js:1058 templates/js/translated/stock.js:1996 +#: templates/js/translated/stock.js:2857 templates/js/translated/stock.js:3090 +#: templates/js/translated/stock.js:3236 msgid "Part" msgstr "零件" @@ -1146,8 +1150,8 @@ msgstr "生產狀態" msgid "Build status code" msgstr "生產狀態代碼" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1333 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "批量代碼" @@ -1242,53 +1246,53 @@ msgstr "專案代碼" msgid "Project code for this build order" msgstr "此生產工單隸屬的專案代碼" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" msgstr "生產工單 {build} 已經完成" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "一張生產工單已經完成" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "尚未指定生產品項" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "生產成品已經完成" -#: build/models.py:789 +#: build/models.py:805 msgid "Build output does not match Build Order" msgstr "生產品項與生產工單不符" -#: build/models.py:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:472 msgid "Quantity must be greater than zero" msgstr "數量必須大於零" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 msgid "Quantity cannot be greater than the output quantity" msgstr "數量不能大於工單生產數量" -#: build/models.py:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" -msgstr "" +msgstr "生產產出 {serial} 並未通過所有必要的測試" -#: build/models.py:1286 +#: build/models.py:1302 msgid "Build object" msgstr "" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2459 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1298,7 +1302,7 @@ msgstr "" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:463 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1310,7 +1314,7 @@ msgstr "" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1325,43 +1329,43 @@ msgstr "" #: templates/js/translated/sales_order.js:1698 #: templates/js/translated/sales_order.js:1824 #: templates/js/translated/stock.js:564 templates/js/translated/stock.js:702 -#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:2985 -#: templates/js/translated/stock.js:3068 +#: templates/js/translated/stock.js:873 templates/js/translated/stock.js:3021 +#: templates/js/translated/stock.js:3104 msgid "Quantity" msgstr "數量" -#: build/models.py:1301 +#: build/models.py:1317 msgid "Required quantity for build order" msgstr "生產工單所需數量" -#: build/models.py:1381 +#: build/models.py:1397 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "" -#: build/models.py:1390 +#: build/models.py:1406 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "分配的數量({q})不能超過可用的庫存數量({a})" -#: build/models.py:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "庫存品項超額分配" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "分配的數量必須大於零" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "有序號的品項數量必須為1" -#: build/models.py:1473 +#: build/models.py:1489 msgid "Selected stock item does not match BOM line" msgstr "選擇的庫存品項和BOM的項目不符" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:566 stock/serializers.py:1052 +#: stock/serializers.py:1164 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:1742 @@ -1372,23 +1376,23 @@ msgstr "選擇的庫存品項和BOM的項目不符" #: templates/js/translated/sales_order.js:1605 #: templates/js/translated/sales_order.js:1692 #: templates/js/translated/stock.js:677 templates/js/translated/stock.js:843 -#: templates/js/translated/stock.js:2941 +#: templates/js/translated/stock.js:2977 msgid "Stock Item" msgstr "庫存品項" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "來源庫存項目" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "要分配的庫存數量" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "安裝到" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "目的庫存品項" @@ -1425,8 +1429,8 @@ msgstr "可追蹤的零件數量必須為整數" msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "因為BOM包含可追蹤的零件,所以數量必須為整數" -#: build/serializers.py:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:483 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "序號" @@ -1451,10 +1455,10 @@ msgstr "序號已存在或無效" msgid "A list of build outputs must be provided" msgstr "必須提供產出清單" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:494 stock/serializers.py:654 stock/serializers.py:750 +#: stock/serializers.py:1196 stock/serializers.py:1452 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1466,8 +1470,8 @@ msgstr "必須提供產出清單" #: templates/js/translated/sales_order.js:1627 #: templates/js/translated/sales_order.js:1706 #: templates/js/translated/stock.js:678 templates/js/translated/stock.js:844 -#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2164 -#: templates/js/translated/stock.js:2835 +#: templates/js/translated/stock.js:1060 templates/js/translated/stock.js:2200 +#: templates/js/translated/stock.js:2871 msgid "Location" msgstr "地點" @@ -1485,42 +1489,42 @@ msgstr "" #: build/serializers.py:439 msgid "Reason for scrapping build output(s)" -msgstr "" +msgstr "生產產出報廢的原因" #: build/serializers.py:499 msgid "Location for completed build outputs" -msgstr "" +msgstr "生產產出的倉儲地點" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:801 stock/serializers.py:1340 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 #: templates/js/translated/purchase_order.js:1723 #: templates/js/translated/return_order.js:331 #: templates/js/translated/sales_order.js:819 -#: templates/js/translated/stock.js:2139 templates/js/translated/stock.js:2959 -#: templates/js/translated/stock.js:3084 +#: templates/js/translated/stock.js:2175 templates/js/translated/stock.js:2995 +#: templates/js/translated/stock.js:3120 msgid "Status" msgstr "狀態" #: build/serializers.py:511 msgid "Accept Incomplete Allocation" -msgstr "" +msgstr "接受不完整的分配" #: build/serializers.py:512 msgid "Complete outputs if stock has not been fully allocated" -msgstr "" +msgstr "如果尚未完全分配庫存,則完成產出" #: build/serializers.py:592 msgid "Remove Allocated Stock" -msgstr "" +msgstr "移除已分配的庫存" #: build/serializers.py:593 msgid "Subtract any stock which has already been allocated to this build" -msgstr "" +msgstr "減去已分配給此次生產的庫存" #: build/serializers.py:599 msgid "Remove Incomplete Outputs" @@ -1566,7 +1570,7 @@ msgstr "" msgid "Required stock has not been fully allocated" msgstr "" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "接受不完整" @@ -1602,11 +1606,11 @@ msgstr "" msgid "bom_item.part must point to the same part as the build order" msgstr "" -#: build/serializers.py:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1065 msgid "Item must be in stock" msgstr "商品必須有庫存" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "" @@ -1619,7 +1623,7 @@ msgstr "" msgid "Build output cannot be specified for allocation of untracked parts" msgstr "" -#: build/serializers.py:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "" @@ -1659,44 +1663,45 @@ msgstr "" msgid "Allocate optional BOM items to build order" msgstr "" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 #: stock/api.py:745 msgid "BOM Item" msgstr "" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "" @@ -1862,7 +1867,7 @@ msgstr "" #: templates/js/translated/pricing.js:929 #: templates/js/translated/sales_order.js:769 #: templates/js/translated/sales_order.js:992 -#: templates/js/translated/stock.js:2888 +#: templates/js/translated/stock.js:2924 msgid "Sales Order" msgstr "" @@ -1920,8 +1925,8 @@ msgstr "" #: templates/js/translated/build.js:1377 #: templates/js/translated/model_renderers.js:235 #: templates/js/translated/purchase_order.js:1274 -#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2153 -#: templates/js/translated/stock.js:3091 +#: templates/js/translated/stock.js:1130 templates/js/translated/stock.js:2189 +#: templates/js/translated/stock.js:3127 #: templates/js/translated/table_filters.js:313 #: templates/js/translated/table_filters.js:404 msgid "Batch" @@ -1990,27 +1995,31 @@ msgstr "" msgid "Order Parts" msgstr "" -#: build/templates/build/detail.html:210 -msgid "Incomplete Build Outputs" -msgstr "" - -#: build/templates/build/detail.html:214 -msgid "Create new build output" +#: 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:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 msgid "Consumed Stock" msgstr "" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2026,15 +2035,15 @@ msgstr "" msgid "Attachments" msgstr "附件" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 msgid "All lines have been fully allocated" msgstr "" @@ -2112,1390 +2121,1414 @@ msgstr "" msgid "User or group responsible for this project" msgstr "" -#: common/models.py:737 +#: common/models.py:744 msgid "Settings key (must be unique - case insensitive)" msgstr "" -#: common/models.py:741 +#: common/models.py:748 msgid "Settings value" msgstr "" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "" -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "" -#: common/models.py:1143 +#: common/models.py:1150 msgid "No plugin" msgstr "" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "" -#: common/models.py:1231 +#: common/models.py:1238 msgid "A setting has been changed which requires a server restart" msgstr "" -#: common/models.py:1238 +#: common/models.py:1245 msgid "Pending migrations" msgstr "" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1283 +#: common/models.py:1290 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "天" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "" -#: common/models.py:1298 +#: common/models.py:1305 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "" -#: common/models.py:1305 +#: common/models.py:1312 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "" -#: common/models.py:1332 +#: common/models.py:1339 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "" -#: common/models.py:1339 +#: common/models.py:1346 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "自動備份" -#: common/models.py:1346 +#: common/models.py:1353 msgid "Enable automatic backup of database and media files" msgstr "啟動資料庫和媒體文件自動備份" -#: common/models.py:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "自動備份間隔" -#: common/models.py:1352 +#: common/models.py:1359 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1360 +#: common/models.py:1367 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1369 +#: common/models.py:1376 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1378 +#: common/models.py:1385 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1386 +#: common/models.py:1393 msgid "Enable barcode scanner support in the web interface" msgstr "" -#: common/models.py:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1399 +#: common/models.py:1406 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1404 +#: common/models.py:1411 msgid "Part Revisions" msgstr "" -#: common/models.py:1405 +#: common/models.py:1412 msgid "Enable revision field for Part" msgstr "" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "" -#: common/models.py:1411 +#: common/models.py:1418 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1415 +#: common/models.py:1422 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1421 +#: common/models.py:1428 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1427 +#: common/models.py:1434 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1433 +#: common/models.py:1440 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1439 +#: common/models.py:1446 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:99 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Display the import wizard in some part views" msgstr "" -#: common/models.py:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1505 +#: common/models.py:1512 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1512 +#: common/models.py:1519 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "" -#: common/models.py:1525 +#: common/models.py:1532 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1526 +#: common/models.py:1533 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1530 +#: common/models.py:1537 msgid "Enforce Parameter Units" msgstr "" -#: common/models.py:1532 +#: common/models.py:1539 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1540 +#: common/models.py:1547 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1548 +#: common/models.py:1555 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1564 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1580 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1588 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1595 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1603 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "" -#: common/models.py:1611 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "" -#: common/models.py:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1618 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1632 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "" -#: common/models.py:1645 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "" -#: common/models.py:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: 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:202 msgid "Page Size" msgstr "" -#: common/models.py:1651 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "" -#: common/models.py:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1657 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "" -#: common/models.py:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1664 +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1671 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1677 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" -msgstr "" +msgstr "生產批號樣板" -#: common/models.py:1692 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" -msgstr "" +msgstr "為庫存品項生成預設生產批號的模板" -#: common/models.py:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "" -#: common/models.py:1704 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "" -#: common/models.py:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1711 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1719 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "" -#: common/models.py:1725 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1731 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1735 +#: common/models.py:1748 msgid "Show Installed Stock Items" msgstr "" -#: common/models.py:1736 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1741 +#: 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 "Build Order Reference Pattern" msgstr "" -#: common/models.py:1743 +#: common/models.py:1764 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1749 +#: common/models.py:1770 msgid "Enable Return Orders" msgstr "" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1755 +#: common/models.py:1776 msgid "Return Order Reference Pattern" msgstr "" -#: common/models.py:1757 +#: common/models.py:1778 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 msgid "Edit Completed Return Orders" msgstr "" -#: common/models.py:1765 +#: common/models.py:1786 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1773 +#: common/models.py:1794 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1780 +#: common/models.py:1801 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1787 +#: common/models.py:1808 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1795 +#: common/models.py:1816 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1803 +#: common/models.py:1824 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1809 +#: common/models.py:1830 msgid "Auto Complete Purchase Orders" msgstr "" -#: common/models.py:1811 +#: common/models.py:1832 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "" -#: common/models.py:1825 +#: common/models.py:1846 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1838 +#: common/models.py:1859 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1844 +#: common/models.py:1865 msgid "Email required" msgstr "" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1852 +#: common/models.py:1873 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "" -#: common/models.py:1859 +#: common/models.py:1880 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "" -#: common/models.py:1865 +#: common/models.py:1886 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "" -#: common/models.py:1879 +#: common/models.py:1900 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1892 +#: common/models.py:1913 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1929 +#: common/models.py:1950 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "" -#: common/models.py:1936 +#: common/models.py:1957 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1942 +#: common/models.py:1963 msgid "Enable project codes" msgstr "" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1950 +#: common/models.py:1971 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1956 +#: common/models.py:1977 msgid "Exclude External Locations" msgstr "" -#: common/models.py:1958 +#: common/models.py:1979 msgid "Exclude stock items in external locations from stocktake calculations" msgstr "" -#: common/models.py:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1966 +#: common/models.py:1987 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1974 +#: common/models.py:1995 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2016 +msgid "Enable Test Station Data" +msgstr "" + +#: common/models.py:2017 +msgid "Enable test station data collection for test results" +msgstr "" + +#: common/models.py:2029 common/models.py:2429 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2043 +#: common/models.py:2070 msgid "Hide inactive parts" msgstr "" -#: common/models.py:2045 +#: common/models.py:2072 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2051 +#: common/models.py:2078 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2052 +#: common/models.py:2079 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2057 +#: common/models.py:2084 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2058 +#: common/models.py:2085 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2063 +#: common/models.py:2090 msgid "Show latest parts" msgstr "" -#: common/models.py:2064 +#: common/models.py:2091 msgid "Show latest parts on the homepage" msgstr "" -#: common/models.py:2069 +#: common/models.py:2096 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2070 +#: common/models.py:2097 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2075 +#: common/models.py:2102 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2076 +#: common/models.py:2103 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2081 +#: common/models.py:2108 msgid "Show low stock" msgstr "" -#: common/models.py:2082 +#: common/models.py:2109 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2087 +#: common/models.py:2114 msgid "Show depleted stock" msgstr "" -#: common/models.py:2088 +#: common/models.py:2115 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2093 +#: common/models.py:2120 msgid "Show needed stock" msgstr "" -#: common/models.py:2094 +#: common/models.py:2121 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2099 +#: common/models.py:2126 msgid "Show expired stock" msgstr "" -#: common/models.py:2100 +#: common/models.py:2127 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2105 +#: common/models.py:2132 msgid "Show stale stock" msgstr "" -#: common/models.py:2106 +#: common/models.py:2133 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2111 +#: common/models.py:2138 msgid "Show pending builds" msgstr "" -#: common/models.py:2112 +#: common/models.py:2139 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2117 +#: common/models.py:2144 msgid "Show overdue builds" msgstr "" -#: common/models.py:2118 +#: common/models.py:2145 msgid "Show overdue builds on the homepage" msgstr "" -#: common/models.py:2123 +#: common/models.py:2150 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2124 +#: common/models.py:2151 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2129 +#: common/models.py:2156 msgid "Show overdue POs" msgstr "" -#: common/models.py:2130 +#: common/models.py:2157 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2135 +#: common/models.py:2162 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2136 +#: common/models.py:2163 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2141 +#: common/models.py:2168 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2142 +#: common/models.py:2169 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2147 +#: common/models.py:2174 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2148 +#: common/models.py:2175 msgid "Show pending SO shipments on the homepage" msgstr "" -#: common/models.py:2153 +#: common/models.py:2180 msgid "Show News" msgstr "" -#: common/models.py:2154 +#: common/models.py:2181 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2159 +#: common/models.py:2186 msgid "Inline label display" msgstr "" -#: common/models.py:2161 +#: common/models.py:2188 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2167 +#: common/models.py:2194 msgid "Default label printer" msgstr "" -#: common/models.py:2169 +#: common/models.py:2196 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2175 +#: common/models.py:2202 msgid "Inline report display" msgstr "" -#: common/models.py:2177 +#: common/models.py:2204 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "" -#: common/models.py:2183 +#: common/models.py:2210 msgid "Search Parts" msgstr "" -#: common/models.py:2184 +#: common/models.py:2211 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2189 +#: common/models.py:2216 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2190 +#: common/models.py:2217 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2195 +#: common/models.py:2222 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2196 +#: common/models.py:2223 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2201 +#: common/models.py:2228 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2202 +#: common/models.py:2229 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2207 +#: common/models.py:2234 msgid "Search Categories" msgstr "" -#: common/models.py:2208 +#: common/models.py:2235 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2213 +#: common/models.py:2240 msgid "Search Stock" msgstr "" -#: common/models.py:2214 +#: common/models.py:2241 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2219 +#: common/models.py:2246 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2221 +#: common/models.py:2248 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2227 +#: common/models.py:2254 msgid "Search Locations" msgstr "" -#: common/models.py:2228 +#: common/models.py:2255 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2233 +#: common/models.py:2260 msgid "Search Companies" msgstr "" -#: common/models.py:2234 +#: common/models.py:2261 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2239 +#: common/models.py:2266 msgid "Search Build Orders" msgstr "" -#: common/models.py:2240 +#: common/models.py:2267 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2245 +#: common/models.py:2272 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2246 +#: common/models.py:2273 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2251 +#: common/models.py:2278 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2253 +#: common/models.py:2280 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2259 +#: common/models.py:2286 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2260 +#: common/models.py:2287 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2265 +#: common/models.py:2292 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2267 +#: common/models.py:2294 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2273 +#: common/models.py:2300 msgid "Search Return Orders" msgstr "" -#: common/models.py:2274 +#: common/models.py:2301 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2279 +#: common/models.py:2306 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2281 +#: common/models.py:2308 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2287 +#: common/models.py:2314 msgid "Search Preview Results" msgstr "" -#: common/models.py:2289 +#: common/models.py:2316 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2295 +#: common/models.py:2322 msgid "Regex Search" msgstr "" -#: common/models.py:2296 +#: common/models.py:2323 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2301 +#: common/models.py:2328 msgid "Whole Word Search" msgstr "" -#: common/models.py:2302 +#: common/models.py:2329 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2307 +#: common/models.py:2334 msgid "Show Quantity in Forms" msgstr "" -#: common/models.py:2308 +#: common/models.py:2335 msgid "Display available part quantity in some forms" msgstr "" -#: common/models.py:2313 +#: common/models.py:2340 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2314 +#: common/models.py:2341 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2319 +#: common/models.py:2346 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2320 +#: common/models.py:2347 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2325 +#: common/models.py:2352 msgid "Date Format" msgstr "" -#: common/models.py:2326 +#: common/models.py:2353 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2366 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2340 +#: common/models.py:2367 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2372 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2347 +#: common/models.py:2374 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2353 +#: common/models.py:2380 msgid "Table String Length" msgstr "" -#: common/models.py:2355 +#: common/models.py:2382 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2361 +#: common/models.py:2388 msgid "Default part label template" msgstr "" -#: common/models.py:2362 +#: common/models.py:2389 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2367 +#: common/models.py:2394 msgid "Default stock item template" msgstr "" -#: common/models.py:2369 +#: common/models.py:2396 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2375 +#: common/models.py:2402 msgid "Default stock location label template" msgstr "" -#: common/models.py:2377 +#: common/models.py:2404 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2383 +#: common/models.py:2410 msgid "Receive error reports" msgstr "" -#: common/models.py:2384 +#: common/models.py:2411 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2389 +#: common/models.py:2416 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2417 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2460 msgid "Price break quantity" msgstr "" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2467 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3503,23 +3536,23 @@ msgstr "" msgid "Price" msgstr "" -#: common/models.py:2441 +#: common/models.py:2468 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2639 common/models.py:2824 msgid "Endpoint" msgstr "" -#: common/models.py:2613 +#: common/models.py:2640 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2623 +#: common/models.py:2650 msgid "Name for this webhook" msgstr "" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2654 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3529,101 +3562,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2627 +#: common/models.py:2654 msgid "Is this webhook active" msgstr "" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2670 users/models.py:148 msgid "Token" msgstr "" -#: common/models.py:2644 +#: common/models.py:2671 msgid "Token for access" msgstr "" -#: common/models.py:2652 +#: common/models.py:2679 msgid "Secret" msgstr "" -#: common/models.py:2653 +#: common/models.py:2680 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2761 +#: common/models.py:2788 msgid "Message ID" msgstr "" -#: common/models.py:2762 +#: common/models.py:2789 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2770 +#: common/models.py:2797 msgid "Host" msgstr "" -#: common/models.py:2771 +#: common/models.py:2798 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2779 +#: common/models.py:2806 msgid "Header" msgstr "" -#: common/models.py:2780 +#: common/models.py:2807 msgid "Header of this message" msgstr "" -#: common/models.py:2787 +#: common/models.py:2814 msgid "Body" msgstr "" -#: common/models.py:2788 +#: common/models.py:2815 msgid "Body of this message" msgstr "" -#: common/models.py:2798 +#: common/models.py:2825 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2803 +#: common/models.py:2830 msgid "Worked on" msgstr "" -#: common/models.py:2804 +#: common/models.py:2831 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2930 +#: common/models.py:2957 msgid "Id" msgstr "" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2959 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2963 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2965 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2967 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Read" msgstr "" -#: common/models.py:2943 +#: common/models.py:2970 msgid "Was this news item read?" msgstr "" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2987 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3633,31 +3666,31 @@ msgstr "" msgid "Image" msgstr "" -#: common/models.py:2960 +#: common/models.py:2987 msgid "Image file" msgstr "" -#: common/models.py:3002 +#: common/models.py:3029 msgid "Unit name must be a valid identifier" msgstr "" -#: common/models.py:3021 +#: common/models.py:3048 msgid "Unit name" msgstr "" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3055 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3029 +#: common/models.py:3056 msgid "Optional unit symbol" msgstr "" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3063 templates/InvenTree/settings/settings_staff_js.html:71 msgid "Definition" msgstr "" -#: common/models.py:3037 +#: common/models.py:3064 msgid "Unit definition" msgstr "" @@ -3961,7 +3994,7 @@ msgid "Link to address information (external)" msgstr "" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:266 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" @@ -3972,7 +4005,7 @@ msgstr "" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -3987,7 +4020,7 @@ msgid "Select manufacturer" msgstr "" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4022,9 +4055,9 @@ msgstr "" #: company/models.py:615 #: report/templates/report/inventree_test_report_base.html:104 -#: stock/models.py:2438 templates/js/translated/company.js:1156 +#: stock/models.py:2441 templates/js/translated/company.js:1156 #: templates/js/translated/company.js:1409 templates/js/translated/part.js:1492 -#: templates/js/translated/stock.js:1512 +#: templates/js/translated/stock.js:1519 msgid "Value" msgstr "" @@ -4033,7 +4066,7 @@ msgid "Parameter value" msgstr "" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4059,7 +4092,7 @@ msgstr "" #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4076,7 +4109,7 @@ msgstr "" msgid "Select supplier" msgstr "" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "" @@ -4093,13 +4126,13 @@ msgid "Supplier part description" msgstr "" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:579 msgid "Note" msgstr "" @@ -4112,10 +4145,10 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1350 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 -#: templates/js/translated/stock.js:2387 +#: templates/js/translated/stock.js:2423 msgid "Packaging" msgstr "" @@ -4157,7 +4190,7 @@ msgstr "" msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "" @@ -4218,13 +4251,13 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1100 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 #: templates/js/translated/return_order.js:296 #: templates/js/translated/sales_order.js:784 -#: templates/js/translated/stock.js:2923 +#: templates/js/translated/stock.js:2959 #: templates/js/translated/table_filters.js:804 msgid "Customer" msgstr "" @@ -4429,8 +4462,9 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "" @@ -4482,7 +4516,7 @@ msgstr "" #: stock/templates/stock/item_base.html:233 #: templates/js/translated/company.js:1590 #: templates/js/translated/purchase_order.js:752 -#: templates/js/translated/stock.js:2243 +#: templates/js/translated/stock.js:2279 msgid "Supplier Part" msgstr "" @@ -4528,7 +4562,7 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4577,15 +4611,17 @@ msgstr "" msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:787 stock/serializers.py:951 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 #: templates/InvenTree/search.html:155 templates/js/translated/part.js:1060 -#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2730 +#: templates/js/translated/search.js:172 templates/js/translated/stock.js:2766 #: users/models.py:193 msgid "Stock Items" msgstr "" @@ -4639,8 +4675,8 @@ msgstr "" msgid "Label template file" msgstr "" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "" @@ -4665,7 +4701,7 @@ msgstr "" msgid "Label height, specified in mm" msgstr "" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "" @@ -4679,8 +4715,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "" @@ -4821,7 +4857,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:168 #: templates/js/translated/purchase_order.js:753 #: templates/js/translated/purchase_order.js:1674 -#: templates/js/translated/stock.js:2223 templates/js/translated/stock.js:2871 +#: templates/js/translated/stock.js:2259 templates/js/translated/stock.js:2907 msgid "Purchase Order" msgstr "" @@ -4830,7 +4866,7 @@ msgstr "" #: order/templates/order/return_order_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:13 #: templates/js/translated/return_order.js:281 -#: templates/js/translated/stock.js:2905 +#: templates/js/translated/stock.js:2941 msgid "Return Order" msgstr "" @@ -4838,11 +4874,11 @@ msgstr "" msgid "Total price for this order" msgstr "" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 msgid "Order Currency" msgstr "" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -5029,9 +5065,9 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:400 #: stock/templates/stock/item_base.html:183 -#: templates/js/translated/stock.js:2274 +#: templates/js/translated/stock.js:2310 msgid "Purchase Price" msgstr "" @@ -5084,8 +5120,8 @@ msgstr "" msgid "User who checked this shipment" msgstr "" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "" @@ -5133,7 +5169,7 @@ msgstr "" msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "" @@ -5207,159 +5243,159 @@ msgstr "" msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "" -#: order/serializers.py:429 +#: order/serializers.py:451 msgid "Auto Pricing" msgstr "" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:447 +#: order/serializers.py:469 msgid "Merge Items" msgstr "" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" -msgstr "" +msgstr "輸入庫存品項的生產批號" -#: order/serializers.py:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "" -#: order/serializers.py:570 +#: order/serializers.py:592 msgid "Scanned barcode" msgstr "" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:610 +#: order/serializers.py:632 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "" -#: order/serializers.py:1623 +#: order/serializers.py:1645 msgid "Line item does not match return order" msgstr "" -#: order/serializers.py:1626 +#: order/serializers.py:1648 msgid "Line item has already been received" msgstr "" -#: order/serializers.py:1655 +#: order/serializers.py:1677 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1733 +#: order/serializers.py:1755 msgid "Line price currency" msgstr "" @@ -5733,7 +5769,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" @@ -5763,12 +5799,12 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -5780,12 +5816,12 @@ msgstr "" #: part/admin.py:48 part/models.py:903 part/templates/part/part_base.html:269 #: report/templates/report/inventree_slr_report.html:103 #: templates/js/translated/part.js:1226 templates/js/translated/part.js:2341 -#: templates/js/translated/stock.js:1999 +#: templates/js/translated/stock.js:2035 msgid "IPN" msgstr "" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" @@ -5861,10 +5897,10 @@ msgstr "" msgid "Category Path" msgstr "" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -5885,17 +5921,17 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3897 msgid "Part IPN" msgstr "" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -5973,8 +6009,8 @@ msgstr "" msgid "This option must be selected" msgstr "" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -5982,12 +6018,17 @@ msgstr "" msgid "Category" msgstr "" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -5995,7 +6036,7 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "" @@ -6010,7 +6051,8 @@ msgstr "" msgid "Default location for parts in this category" msgstr "" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 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" @@ -6076,7 +6118,7 @@ msgstr "" msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3896 msgid "Part name" msgstr "" @@ -6358,7 +6400,7 @@ msgstr "" #: templates/js/translated/part.js:1085 templates/js/translated/pricing.js:826 #: templates/js/translated/pricing.js:950 #: templates/js/translated/purchase_order.js:1732 -#: templates/js/translated/stock.js:2785 +#: templates/js/translated/stock.js:2821 msgid "Date" msgstr "" @@ -6410,586 +6452,602 @@ msgstr "" msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3448 -msgid "Test with this name already exists for this part" +#: part/models.py:3456 +msgid "Test template with the same key already exists for part" msgstr "" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "" -#: part/models.py:3496 +#: part/models.py:3505 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "" -#: part/models.py:3503 +#: part/models.py:3512 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3575 +#: part/models.py:3584 msgid "Choices must be unique" msgstr "" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3712 +#: part/models.py:3721 msgid "Invalid choice for parameter value" msgstr "" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "" -#: part/models.py:3847 +#: part/models.py:3856 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3885 +#: part/models.py:3894 msgid "Part ID or part name" msgstr "" -#: part/models.py:3886 +#: part/models.py:3895 msgid "Unique part ID value" msgstr "" -#: part/models.py:3888 +#: part/models.py:3897 msgid "Part IPN value" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "Level" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "BOM level" msgstr "" -#: part/models.py:3979 +#: part/models.py:3988 msgid "Select parent part" msgstr "" -#: part/models.py:3989 +#: part/models.py:3998 msgid "Sub part" msgstr "" -#: part/models.py:3990 +#: part/models.py:3999 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4001 +#: part/models.py:4010 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4007 +#: part/models.py:4016 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4013 +#: part/models.py:4022 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4029 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4021 +#: part/models.py:4030 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4028 +#: part/models.py:4037 msgid "BOM item reference" msgstr "" -#: part/models.py:4036 +#: part/models.py:4045 msgid "BOM item notes" msgstr "" -#: part/models.py:4042 +#: part/models.py:4051 msgid "Checksum" msgstr "" -#: part/models.py:4043 +#: part/models.py:4052 msgid "BOM line checksum" msgstr "" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4057 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4049 +#: part/models.py:4058 msgid "This BOM item has been validated" msgstr "" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4063 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:4055 +#: part/models.py:4064 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4069 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4061 +#: part/models.py:4070 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4146 stock/models.py:649 +#: part/models.py:4155 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4165 part/models.py:4167 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4298 +#: part/models.py:4307 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4319 +#: part/models.py:4328 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4332 +#: part/models.py:4341 msgid "Parent BOM item" msgstr "" -#: part/models.py:4340 +#: part/models.py:4349 msgid "Substitute part" msgstr "" -#: part/models.py:4356 +#: part/models.py:4365 msgid "Part 1" msgstr "" -#: part/models.py:4364 +#: part/models.py:4373 msgid "Part 2" msgstr "" -#: part/models.py:4365 +#: part/models.py:4374 msgid "Select Related Part" msgstr "" -#: part/models.py:4384 +#: part/models.py:4393 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4389 +#: part/models.py:4398 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:406 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 msgid "No parts selected" msgstr "" -#: part/serializers.py:389 +#: part/serializers.py:407 msgid "Select category" msgstr "" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:432 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:446 +#: part/serializers.py:464 msgid "Copy Notes" msgstr "" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:480 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +msgid "External Stock" +msgstr "" + +#: part/serializers.py:823 +msgid "Unallocated Stock" +msgstr "" + +#: part/serializers.py:826 +msgid "Variant Stock" +msgstr "" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:844 +#: part/serializers.py:880 msgid "Existing Image" msgstr "" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:862 +#: part/serializers.py:898 msgid "Image file does not exist" msgstr "" -#: part/serializers.py:1068 +#: part/serializers.py:1104 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1078 +#: part/serializers.py:1114 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1088 +#: part/serializers.py:1124 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1095 +#: part/serializers.py:1131 msgid "Exclude stock items in external locations" msgstr "" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1228 +#: part/serializers.py:1264 msgid "Minimum price currency" msgstr "" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1243 +#: part/serializers.py:1279 msgid "Maximum price currency" msgstr "" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1647 +#: part/serializers.py:1693 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1659 +#: part/serializers.py:1705 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1694 +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "" @@ -7147,7 +7205,7 @@ msgstr "" #: part/templates/part/detail.html:67 part/templates/part/part_sidebar.html:50 #: stock/admin.py:251 templates/InvenTree/settings/part_stocktake.html:30 #: templates/InvenTree/settings/sidebar.html:53 -#: templates/js/translated/stock.js:2179 users/models.py:191 +#: templates/js/translated/stock.js:2215 users/models.py:191 msgid "Stocktake" msgstr "" @@ -7221,7 +7279,7 @@ msgid "Validate BOM" msgstr "" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "" @@ -7405,7 +7463,7 @@ msgstr "" msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "" @@ -7509,7 +7567,7 @@ msgstr "" #: templates/InvenTree/settings/sidebar.html:51 #: templates/js/translated/part.js:1242 templates/js/translated/part.js:2145 #: templates/js/translated/part.js:2392 templates/js/translated/stock.js:1059 -#: templates/js/translated/stock.js:2033 templates/navbar.html:31 +#: templates/js/translated/stock.js:2069 templates/navbar.html:31 msgid "Stock" msgstr "庫存" @@ -7555,7 +7613,7 @@ msgstr "" #: stock/templates/stock/item_base.html:446 #: templates/js/translated/company.js:1693 #: templates/js/translated/company.js:1703 -#: templates/js/translated/stock.js:2209 +#: templates/js/translated/stock.js:2245 msgid "Last Updated" msgstr "" @@ -7999,7 +8057,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "" @@ -8307,16 +8365,16 @@ msgstr "" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "" @@ -8336,103 +8394,111 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 msgid "Page size for PDF reports" msgstr "" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "" -#: report/models.py:615 +#: report/models.py:640 +msgid "Snippet file with this name already exists" +msgstr "" + +#: report/models.py:647 msgid "Snippet" msgstr "" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "" -#: report/models.py:660 +#: report/models.py:713 +msgid "Asset file with this name already exists" +msgstr "" + +#: report/models.py:721 msgid "Asset" msgstr "" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "" -#: report/models.py:690 +#: report/models.py:751 msgid "stock location query filters (comma-separated list of key=value pairs)" msgstr "" @@ -8499,12 +8565,12 @@ msgid "Test Results" msgstr "" #: report/templates/report/inventree_test_report_base.html:102 -#: templates/js/translated/stock.js:1485 +#: templates/js/translated/stock.js:1492 msgid "Test" msgstr "" #: report/templates/report/inventree_test_report_base.html:103 -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Result" msgstr "" @@ -8531,7 +8597,7 @@ msgstr "" #: report/templates/report/inventree_test_report_base.html:168 #: stock/admin.py:162 templates/js/translated/stock.js:700 -#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3074 +#: templates/js/translated/stock.js:871 templates/js/translated/stock.js:3110 msgid "Serial" msgstr "" @@ -8615,7 +8681,7 @@ msgstr "" #: stock/admin.py:256 stock/models.py:886 #: stock/templates/stock/item_base.html:433 -#: templates/js/translated/stock.js:2193 users/models.py:113 +#: templates/js/translated/stock.js:2229 users/models.py:113 msgid "Expiry Date" msgstr "" @@ -8713,7 +8779,7 @@ msgstr "" msgid "Stock items may not be directly located into a structural stock locations, but may be located to child locations." msgstr "" -#: stock/models.py:174 templates/js/translated/stock.js:2745 +#: stock/models.py:174 templates/js/translated/stock.js:2781 #: templates/js/translated/table_filters.js:243 msgid "External" msgstr "" @@ -8722,7 +8788,7 @@ msgstr "" msgid "This is an external stock location" msgstr "" -#: stock/models.py:181 templates/js/translated/stock.js:2754 +#: stock/models.py:181 templates/js/translated/stock.js:2790 #: templates/js/translated/table_filters.js:246 msgid "Location type" msgstr "" @@ -8739,7 +8805,7 @@ msgstr "" msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:290 msgid "Stock item cannot be created for virtual parts" msgstr "" @@ -8784,7 +8850,7 @@ msgstr "" msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1351 msgid "Packaging this stock item is stored in" msgstr "" @@ -8796,9 +8862,9 @@ msgstr "" msgid "Serial number for this item" msgstr "" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1334 msgid "Batch code for this stock item" -msgstr "" +msgstr "此庫存品項的生產批號" #: stock/models.py:835 msgid "Stock Quantity" @@ -8873,7 +8939,7 @@ msgstr "" msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:529 msgid "Serial numbers already exist" msgstr "" @@ -8905,7 +8971,7 @@ msgstr "" msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1240 msgid "Duplicate stock items" msgstr "" @@ -8929,207 +8995,236 @@ msgstr "" msgid "Entry notes" msgstr "" -#: stock/models.py:2399 +#: stock/models.py:2402 msgid "Value must be provided for this test" msgstr "" -#: stock/models.py:2405 +#: stock/models.py:2408 msgid "Attachment must be uploaded for this test" msgstr "" -#: stock/models.py:2432 +#: stock/models.py:2435 msgid "Test result" msgstr "" -#: stock/models.py:2439 +#: stock/models.py:2442 msgid "Test output value" msgstr "" -#: stock/models.py:2447 +#: stock/models.py:2450 msgid "Test result attachment" msgstr "" -#: stock/models.py:2451 +#: stock/models.py:2454 msgid "Test notes" msgstr "" -#: stock/serializers.py:96 +#: stock/models.py:2462 templates/js/translated/stock.js:1545 +msgid "Test station" +msgstr "" + +#: stock/models.py:2463 +msgid "The identifier of the test station where the test was performed" +msgstr "" + +#: stock/models.py:2469 +msgid "Started" +msgstr "" + +#: stock/models.py:2470 +msgid "The timestamp of the test start" +msgstr "" + +#: stock/models.py:2476 +msgid "Finished" +msgstr "" + +#: stock/models.py:2477 +msgid "The timestamp of the test finish" +msgstr "" + +#: stock/serializers.py:100 msgid "Test template for this result" msgstr "" -#: stock/serializers.py:115 +#: stock/serializers.py:119 msgid "Template ID or test name must be provided" msgstr "" -#: stock/serializers.py:169 +#: stock/serializers.py:151 +msgid "The test finished time cannot be earlier than the test started time" +msgstr "" + +#: stock/serializers.py:184 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:267 +#: stock/serializers.py:282 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:380 +#: stock/serializers.py:402 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:442 +#: stock/serializers.py:464 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:455 +#: stock/serializers.py:477 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:462 +#: stock/serializers.py:484 msgid "Enter serial numbers for new items" msgstr "" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:495 stock/serializers.py:1197 stock/serializers.py:1453 msgid "Destination stock location" msgstr "" -#: stock/serializers.py:480 +#: stock/serializers.py:502 msgid "Optional note field" msgstr "" -#: stock/serializers.py:490 +#: stock/serializers.py:512 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:545 +#: stock/serializers.py:567 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:574 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:553 +#: stock/serializers.py:575 msgid "Enter the quantity of items to install" msgstr "" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:580 stock/serializers.py:660 stock/serializers.py:756 +#: stock/serializers.py:806 msgid "Add transaction note (optional)" msgstr "" -#: stock/serializers.py:566 +#: stock/serializers.py:588 msgid "Quantity to install must be at least 1" msgstr "" -#: stock/serializers.py:574 +#: stock/serializers.py:596 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:581 +#: stock/serializers.py:607 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:620 msgid "Quantity to install must not exceed available quantity" msgstr "" -#: stock/serializers.py:628 +#: stock/serializers.py:655 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:663 +#: stock/serializers.py:690 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:676 +#: stock/serializers.py:703 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:693 +#: stock/serializers.py:720 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:724 +#: stock/serializers.py:751 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:761 +#: stock/serializers.py:788 msgid "Select stock items to change status" msgstr "" -#: stock/serializers.py:767 +#: stock/serializers.py:794 msgid "No stock items selected" msgstr "" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:890 stock/serializers.py:953 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1036 +#: stock/serializers.py:1069 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1040 +#: stock/serializers.py:1073 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1044 +#: stock/serializers.py:1077 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1068 +#: stock/serializers.py:1101 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1074 +#: stock/serializers.py:1107 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1082 +#: stock/serializers.py:1115 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1125 stock/serializers.py:1379 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1171 +#: stock/serializers.py:1204 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1176 +#: stock/serializers.py:1209 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1177 +#: stock/serializers.py:1210 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1182 +#: stock/serializers.py:1215 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1183 +#: stock/serializers.py:1216 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1193 +#: stock/serializers.py:1226 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1260 +#: stock/serializers.py:1293 msgid "No Change" msgstr "" -#: stock/serializers.py:1289 +#: stock/serializers.py:1322 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1308 +#: stock/serializers.py:1341 msgid "Stock item status code" msgstr "" -#: stock/serializers.py:1336 +#: stock/serializers.py:1369 msgid "Stock transaction notes" msgstr "" @@ -9154,7 +9249,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:286 msgid "Delete Test Data" msgstr "" @@ -9170,15 +9265,15 @@ msgstr "" msgid "Installed Stock Items" msgstr "" -#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3235 +#: stock/templates/stock/item.html:145 templates/js/translated/stock.js:3271 msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:274 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:304 templates/js/translated/stock.js:1698 msgid "Add Test Result" msgstr "" @@ -9201,17 +9296,17 @@ msgid "Stock adjustment actions" msgstr "" #: stock/templates/stock/item_base.html:79 -#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1785 +#: stock/templates/stock/location.html:90 templates/js/translated/stock.js:1821 msgid "Count stock" msgstr "" #: stock/templates/stock/item_base.html:81 -#: templates/js/translated/stock.js:1767 +#: templates/js/translated/stock.js:1803 msgid "Add stock" msgstr "" #: stock/templates/stock/item_base.html:82 -#: templates/js/translated/stock.js:1776 +#: templates/js/translated/stock.js:1812 msgid "Remove stock" msgstr "" @@ -9220,12 +9315,12 @@ msgid "Serialize stock" msgstr "" #: stock/templates/stock/item_base.html:88 -#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1794 +#: stock/templates/stock/location.html:96 templates/js/translated/stock.js:1830 msgid "Transfer stock" msgstr "" #: stock/templates/stock/item_base.html:91 -#: templates/js/translated/stock.js:1848 +#: templates/js/translated/stock.js:1884 msgid "Assign to customer" msgstr "" @@ -9364,7 +9459,7 @@ msgid "No stocktake performed" msgstr "" #: stock/templates/stock/item_base.html:507 -#: templates/js/translated/stock.js:1915 +#: templates/js/translated/stock.js:1951 msgid "stock item" msgstr "" @@ -9469,7 +9564,7 @@ msgid "New Location" msgstr "" #: stock/templates/stock/location.html:287 -#: templates/js/translated/stock.js:2536 +#: templates/js/translated/stock.js:2572 msgid "stock location" msgstr "" @@ -10063,7 +10158,7 @@ msgid "Delete Location Type" msgstr "" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:37 msgid "New Location Type" msgstr "" @@ -10120,7 +10215,7 @@ msgstr "" msgid "Stock Settings" msgstr "" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:33 msgid "Stock Location Types" msgstr "" @@ -10662,7 +10757,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "" @@ -10676,7 +10771,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "" @@ -11051,62 +11146,66 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +msgid "External stock" +msgstr "" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "" @@ -11389,7 +11488,7 @@ msgstr "" #: templates/js/translated/build.js:2115 templates/js/translated/build.js:2480 #: templates/js/translated/forms.js:2155 templates/js/translated/forms.js:2171 #: templates/js/translated/part.js:2316 templates/js/translated/part.js:2742 -#: templates/js/translated/stock.js:1946 templates/js/translated/stock.js:2674 +#: templates/js/translated/stock.js:1982 templates/js/translated/stock.js:2710 msgid "Select" msgstr "" @@ -11401,7 +11500,7 @@ msgstr "" msgid "Progress" msgstr "" -#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3006 +#: templates/js/translated/build.js:2211 templates/js/translated/stock.js:3042 msgid "No user information" msgstr "" @@ -11449,29 +11548,29 @@ msgstr "" msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 msgid "Consumable Item" msgstr "" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 msgid "Tracked item" msgstr "" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1865 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 msgid "Remove stock allocation" msgstr "" @@ -11804,15 +11903,15 @@ msgstr "" msgid "Clear input" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "File Column" msgstr "" -#: templates/js/translated/forms.js:3075 +#: templates/js/translated/forms.js:3091 msgid "Field Name" msgstr "" -#: templates/js/translated/forms.js:3087 +#: templates/js/translated/forms.js:3103 msgid "Select Columns" msgstr "" @@ -12289,7 +12388,7 @@ msgid "No category" msgstr "" #: templates/js/translated/part.js:2531 templates/js/translated/part.js:2661 -#: templates/js/translated/stock.js:2633 +#: templates/js/translated/stock.js:2669 msgid "Display as list" msgstr "" @@ -12301,7 +12400,7 @@ msgstr "" msgid "No subcategories found" msgstr "" -#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2653 +#: templates/js/translated/part.js:2681 templates/js/translated/stock.js:2689 msgid "Display as tree" msgstr "" @@ -12313,64 +12412,64 @@ msgstr "" msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1453 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 -#: templates/js/translated/stock.js:1692 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1454 +#: templates/js/translated/stock.js:1728 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" @@ -12601,7 +12700,7 @@ msgstr "" #: templates/js/translated/purchase_order.js:1217 msgid "Add batch code" -msgstr "" +msgstr "新增生產批號" #: templates/js/translated/purchase_order.js:1228 msgid "Add serial numbers" @@ -12907,7 +13006,7 @@ msgstr "" #: templates/js/translated/sales_order.js:1623 #: templates/js/translated/sales_order.js:1710 -#: templates/js/translated/stock.js:1737 +#: templates/js/translated/stock.js:1773 msgid "Shipped to customer" msgstr "" @@ -13165,7 +13264,7 @@ msgstr "" msgid "Specify stock quantity" msgstr "" -#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3263 +#: templates/js/translated/stock.js:1177 templates/js/translated/stock.js:3299 msgid "Select Stock Items" msgstr "" @@ -13189,248 +13288,256 @@ msgstr "" msgid "NO RESULT" msgstr "" -#: templates/js/translated/stock.js:1440 +#: templates/js/translated/stock.js:1447 msgid "Pass test" msgstr "" -#: templates/js/translated/stock.js:1443 +#: templates/js/translated/stock.js:1450 msgid "Add test result" msgstr "" -#: templates/js/translated/stock.js:1466 +#: templates/js/translated/stock.js:1473 msgid "No test results found" msgstr "" -#: templates/js/translated/stock.js:1530 +#: templates/js/translated/stock.js:1537 msgid "Test Date" msgstr "" -#: templates/js/translated/stock.js:1677 +#: templates/js/translated/stock.js:1550 +msgid "Test started" +msgstr "" + +#: templates/js/translated/stock.js:1559 +msgid "Test finished" +msgstr "" + +#: templates/js/translated/stock.js:1713 msgid "Edit Test Result" msgstr "" -#: templates/js/translated/stock.js:1697 +#: templates/js/translated/stock.js:1733 msgid "Delete Test Result" msgstr "" -#: templates/js/translated/stock.js:1729 +#: templates/js/translated/stock.js:1765 msgid "In production" msgstr "" -#: templates/js/translated/stock.js:1733 +#: templates/js/translated/stock.js:1769 msgid "Installed in Stock Item" msgstr "" -#: templates/js/translated/stock.js:1741 +#: templates/js/translated/stock.js:1777 msgid "Assigned to Sales Order" msgstr "" -#: templates/js/translated/stock.js:1747 +#: templates/js/translated/stock.js:1783 msgid "No stock location set" msgstr "" -#: templates/js/translated/stock.js:1803 +#: templates/js/translated/stock.js:1839 msgid "Change stock status" msgstr "" -#: templates/js/translated/stock.js:1812 +#: templates/js/translated/stock.js:1848 msgid "Merge stock" msgstr "" -#: templates/js/translated/stock.js:1861 +#: templates/js/translated/stock.js:1897 msgid "Delete stock" msgstr "" -#: templates/js/translated/stock.js:1916 +#: templates/js/translated/stock.js:1952 msgid "stock items" msgstr "" -#: templates/js/translated/stock.js:1921 +#: templates/js/translated/stock.js:1957 msgid "Scan to location" msgstr "" -#: templates/js/translated/stock.js:1932 +#: templates/js/translated/stock.js:1968 msgid "Stock Actions" msgstr "" -#: templates/js/translated/stock.js:1976 +#: templates/js/translated/stock.js:2012 msgid "Load installed items" msgstr "" -#: templates/js/translated/stock.js:2054 +#: templates/js/translated/stock.js:2090 msgid "Stock item is in production" msgstr "" -#: templates/js/translated/stock.js:2059 +#: templates/js/translated/stock.js:2095 msgid "Stock item assigned to sales order" msgstr "" -#: templates/js/translated/stock.js:2062 +#: templates/js/translated/stock.js:2098 msgid "Stock item assigned to customer" msgstr "" -#: templates/js/translated/stock.js:2065 +#: templates/js/translated/stock.js:2101 msgid "Serialized stock item has been allocated" msgstr "" -#: templates/js/translated/stock.js:2067 +#: templates/js/translated/stock.js:2103 msgid "Stock item has been fully allocated" msgstr "" -#: templates/js/translated/stock.js:2069 +#: templates/js/translated/stock.js:2105 msgid "Stock item has been partially allocated" msgstr "" -#: templates/js/translated/stock.js:2072 +#: templates/js/translated/stock.js:2108 msgid "Stock item has been installed in another item" msgstr "" -#: templates/js/translated/stock.js:2074 +#: templates/js/translated/stock.js:2110 msgid "Stock item has been consumed by a build order" msgstr "" -#: templates/js/translated/stock.js:2078 +#: templates/js/translated/stock.js:2114 msgid "Stock item has expired" msgstr "" -#: templates/js/translated/stock.js:2080 +#: templates/js/translated/stock.js:2116 msgid "Stock item will expire soon" msgstr "" -#: templates/js/translated/stock.js:2085 +#: templates/js/translated/stock.js:2121 msgid "Stock item has been rejected" msgstr "" -#: templates/js/translated/stock.js:2087 +#: templates/js/translated/stock.js:2123 msgid "Stock item is lost" msgstr "" -#: templates/js/translated/stock.js:2089 +#: templates/js/translated/stock.js:2125 msgid "Stock item is destroyed" msgstr "" -#: templates/js/translated/stock.js:2093 +#: templates/js/translated/stock.js:2129 #: templates/js/translated/table_filters.js:350 msgid "Depleted" msgstr "" -#: templates/js/translated/stock.js:2258 +#: templates/js/translated/stock.js:2294 msgid "Supplier part not specified" msgstr "" -#: templates/js/translated/stock.js:2305 +#: templates/js/translated/stock.js:2341 msgid "Stock Value" msgstr "" -#: templates/js/translated/stock.js:2433 +#: templates/js/translated/stock.js:2469 msgid "No stock items matching query" msgstr "" -#: templates/js/translated/stock.js:2537 +#: templates/js/translated/stock.js:2573 msgid "stock locations" msgstr "" -#: templates/js/translated/stock.js:2692 +#: templates/js/translated/stock.js:2728 msgid "Load Sublocations" msgstr "" -#: templates/js/translated/stock.js:2810 +#: templates/js/translated/stock.js:2846 msgid "Details" msgstr "" -#: templates/js/translated/stock.js:2814 +#: templates/js/translated/stock.js:2850 msgid "No changes" msgstr "" -#: templates/js/translated/stock.js:2826 +#: templates/js/translated/stock.js:2862 msgid "Part information unavailable" msgstr "" -#: templates/js/translated/stock.js:2848 +#: templates/js/translated/stock.js:2884 msgid "Location no longer exists" msgstr "" -#: templates/js/translated/stock.js:2865 +#: templates/js/translated/stock.js:2901 msgid "Build order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2880 +#: templates/js/translated/stock.js:2916 msgid "Purchase order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2897 +#: templates/js/translated/stock.js:2933 msgid "Sales Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2914 +#: templates/js/translated/stock.js:2950 msgid "Return Order no longer exists" msgstr "" -#: templates/js/translated/stock.js:2933 +#: templates/js/translated/stock.js:2969 msgid "Customer no longer exists" msgstr "" -#: templates/js/translated/stock.js:2951 +#: templates/js/translated/stock.js:2987 msgid "Stock item no longer exists" msgstr "" -#: templates/js/translated/stock.js:2969 +#: templates/js/translated/stock.js:3005 msgid "Added" msgstr "" -#: templates/js/translated/stock.js:2977 +#: templates/js/translated/stock.js:3013 msgid "Removed" msgstr "" -#: templates/js/translated/stock.js:3049 +#: templates/js/translated/stock.js:3085 msgid "No installed items" msgstr "" -#: templates/js/translated/stock.js:3103 templates/js/translated/stock.js:3139 +#: templates/js/translated/stock.js:3139 templates/js/translated/stock.js:3175 msgid "Uninstall Stock Item" msgstr "" -#: templates/js/translated/stock.js:3161 +#: templates/js/translated/stock.js:3197 msgid "Select stock item to uninstall" msgstr "" -#: templates/js/translated/stock.js:3182 +#: templates/js/translated/stock.js:3218 msgid "Install another stock item into this item" msgstr "" -#: templates/js/translated/stock.js:3183 +#: 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:3185 +#: 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:3186 +#: templates/js/translated/stock.js:3222 msgid "The Stock Item is currently available in stock" msgstr "" -#: templates/js/translated/stock.js:3187 +#: templates/js/translated/stock.js:3223 msgid "The Stock Item is not already installed in another item" msgstr "" -#: templates/js/translated/stock.js:3188 +#: templates/js/translated/stock.js:3224 msgid "The Stock Item is tracked by either a batch code or serial number" -msgstr "" +msgstr "本庫存品項可透過生產批號或序號追蹤" -#: templates/js/translated/stock.js:3201 +#: templates/js/translated/stock.js:3237 msgid "Select part to install" msgstr "" -#: templates/js/translated/stock.js:3264 +#: templates/js/translated/stock.js:3300 msgid "Select one or more stock items" msgstr "" -#: templates/js/translated/stock.js:3277 +#: templates/js/translated/stock.js:3313 msgid "Selected stock items" msgstr "" -#: templates/js/translated/stock.js:3281 +#: templates/js/translated/stock.js:3317 msgid "Change Stock Status" msgstr "" @@ -13539,7 +13646,7 @@ msgstr "" #: templates/js/translated/table_filters.js:314 #: templates/js/translated/table_filters.js:405 msgid "Batch code" -msgstr "" +msgstr "生產批號" #: templates/js/translated/table_filters.js:325 #: templates/js/translated/table_filters.js:700 @@ -13605,11 +13712,11 @@ msgstr "" #: templates/js/translated/table_filters.js:400 msgid "Has batch code" -msgstr "" +msgstr "有生產批號" #: templates/js/translated/table_filters.js:409 msgid "Stock item is tracked by either batch code or serial number" -msgstr "" +msgstr "庫存品項可透過生產批號或序號追蹤" #: templates/js/translated/table_filters.js:414 msgid "Has purchase price" @@ -13790,11 +13897,11 @@ msgstr "" #: templates/navbar.html:148 msgid "Logout" -msgstr "" +msgstr "登出" #: templates/notes_buttons.html:6 templates/notes_buttons.html:7 msgid "Save" -msgstr "" +msgstr "儲存" #: templates/notifications.html:9 msgid "Show all notifications and history" @@ -13806,7 +13913,7 @@ msgstr "" #: templates/registration/logged_out.html:7 msgid "You were logged out successfully." -msgstr "" +msgstr "您已成功登出。" #: templates/registration/logged_out.html:9 msgid "Log in again" diff --git a/InvenTree/locale/zh_Hans/LC_MESSAGES/django.po b/InvenTree/locale/zh_Hans/LC_MESSAGES/django.po index 6be00343a6..228a99d9ae 100644 --- a/InvenTree/locale/zh_Hans/LC_MESSAGES/django.po +++ b/InvenTree/locale/zh_Hans/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: inventree\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-02-28 06:44+0000\n" +"POT-Creation-Date: 2024-03-15 22:12+0000\n" "PO-Revision-Date: 2023-02-28 22:38\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" @@ -31,24 +31,24 @@ msgstr "" msgid "Invalid unit provided ({unit})" msgstr "提供的数量无效" -#: InvenTree/conversion.py:170 +#: InvenTree/conversion.py:177 #, fuzzy #| msgid "No value set" msgid "No value provided" msgstr "未设置值" -#: InvenTree/conversion.py:198 +#: InvenTree/conversion.py:205 #, python-brace-format msgid "Could not convert {original} to {unit}" msgstr "" -#: InvenTree/conversion.py:200 +#: InvenTree/conversion.py:207 #, fuzzy #| msgid "Invalid quantity provided" msgid "Invalid quantity supplied" msgstr "提供的数量无效" -#: InvenTree/conversion.py:214 +#: InvenTree/conversion.py:221 #, fuzzy, python-brace-format #| msgid "Invalid quantity provided" msgid "Invalid quantity supplied ({exc})" @@ -71,10 +71,10 @@ msgstr "输入日期" #: part/models.py:3174 part/templates/part/part_sidebar.html:63 #: report/templates/report/inventree_build_order_base.html:172 #: stock/admin.py:226 stock/models.py:2335 stock/models.py:2451 -#: stock/serializers.py:479 stock/serializers.py:632 stock/serializers.py:728 -#: stock/serializers.py:778 stock/serializers.py:1081 stock/serializers.py:1170 -#: stock/serializers.py:1335 stock/templates/stock/stock_sidebar.html:25 -#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1259 +#: stock/serializers.py:487 stock/serializers.py:645 stock/serializers.py:741 +#: stock/serializers.py:791 stock/serializers.py:1100 stock/serializers.py:1189 +#: stock/serializers.py:1354 stock/templates/stock/stock_sidebar.html:25 +#: templates/js/translated/barcode.js:143 templates/js/translated/bom.js:1265 #: templates/js/translated/company.js:1674 templates/js/translated/order.js:347 #: templates/js/translated/part.js:1080 #: templates/js/translated/purchase_order.js:2201 @@ -138,47 +138,47 @@ msgstr "提供的电子邮件域未被核准。" msgid "Registration is disabled." msgstr "" -#: InvenTree/helpers.py:512 order/models.py:529 order/models.py:731 +#: InvenTree/helpers.py:528 order/models.py:529 order/models.py:731 msgid "Invalid quantity provided" msgstr "提供的数量无效" -#: InvenTree/helpers.py:520 +#: InvenTree/helpers.py:536 msgid "Empty serial number string" msgstr "空序列号字符串" -#: InvenTree/helpers.py:549 +#: InvenTree/helpers.py:565 msgid "Duplicate serial" msgstr "重复的序列号" -#: InvenTree/helpers.py:581 InvenTree/helpers.py:624 +#: InvenTree/helpers.py:597 InvenTree/helpers.py:640 #, fuzzy, python-brace-format #| msgid "Invalid group range: {g}" msgid "Invalid group range: {group}" msgstr "无效的组范围: {g}" -#: InvenTree/helpers.py:612 +#: InvenTree/helpers.py:628 #, fuzzy, python-brace-format #| msgid "Group range {g} exceeds allowed quantity ({q})" msgid "Group range {group} exceeds allowed quantity ({expected_quantity})" msgstr "组 {g} 超出了允许的数量 ({q})" -#: InvenTree/helpers.py:642 InvenTree/helpers.py:649 InvenTree/helpers.py:668 +#: InvenTree/helpers.py:658 InvenTree/helpers.py:665 InvenTree/helpers.py:684 #, fuzzy, python-brace-format #| msgid "Invalid group sequence: {g}" msgid "Invalid group sequence: {group}" msgstr "无效的组序列: {g}" -#: InvenTree/helpers.py:678 +#: InvenTree/helpers.py:694 msgid "No serial numbers found" msgstr "未找到序列号" -#: InvenTree/helpers.py:683 +#: InvenTree/helpers.py:699 #, fuzzy #| msgid "Number of unique serial numbers ({s}) must match quantity ({q})" msgid "Number of unique serial numbers ({len(serials)}) must match quantity ({expected_quantity})" msgstr "唯一序列号 ({s}) 必须匹配数量 ({q})" -#: InvenTree/helpers.py:801 +#: InvenTree/helpers.py:817 msgid "Remove HTML tags from this value" msgstr "从这个值中删除 HTML 标签" @@ -420,7 +420,7 @@ msgstr "附件" msgid "Select file to attach" msgstr "选择附件" -#: InvenTree/models.py:568 common/models.py:2934 company/models.py:145 +#: InvenTree/models.py:568 common/models.py:2955 company/models.py:145 #: company/models.py:452 company/models.py:509 company/models.py:818 #: order/models.py:279 order/models.py:1276 order/models.py:1690 #: part/admin.py:55 part/models.py:918 @@ -451,9 +451,9 @@ msgstr "注释" msgid "File comment" msgstr "文件注释" -#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2410 -#: common/models.py:2411 common/models.py:2635 common/models.py:2636 -#: common/models.py:2881 common/models.py:2882 part/models.py:3184 +#: InvenTree/models.py:584 InvenTree/models.py:585 common/models.py:2431 +#: common/models.py:2432 common/models.py:2656 common/models.py:2657 +#: common/models.py:2902 common/models.py:2903 part/models.py:3184 #: part/models.py:3271 part/models.py:3364 part/models.py:3392 #: plugin/models.py:251 plugin/models.py:252 #: report/templates/report/inventree_test_report_base.html:105 @@ -498,10 +498,10 @@ msgstr "" msgid "Invalid choice" msgstr "选择无效" -#: InvenTree/models.py:894 common/models.py:2622 common/models.py:3020 +#: InvenTree/models.py:894 common/models.py:2643 common/models.py:3041 #: common/serializers.py:370 company/models.py:608 label/models.py:120 -#: machine/models.py:24 part/models.py:854 part/models.py:3606 -#: plugin/models.py:41 report/models.py:174 stock/models.py:76 +#: machine/models.py:24 part/models.py:854 part/models.py:3615 +#: plugin/models.py:41 report/models.py:175 stock/models.py:76 #: templates/InvenTree/settings/mixins/urls.html:13 #: templates/InvenTree/settings/notifications.html:17 #: templates/InvenTree/settings/plugin.html:81 @@ -525,10 +525,10 @@ msgstr "名称" #: company/templates/company/manufacturer_part.html:75 #: company/templates/company/supplier_part.html:107 label/models.py:127 #: order/models.py:265 order/models.py:1304 part/admin.py:303 part/admin.py:414 -#: part/models.py:877 part/models.py:3621 part/templates/part/category.html:82 +#: part/models.py:877 part/models.py:3630 part/templates/part/category.html:82 #: part/templates/part/part_base.html:170 -#: part/templates/part/part_scheduling.html:12 report/models.py:187 -#: report/models.py:622 report/models.py:667 +#: part/templates/part/part_scheduling.html:12 report/models.py:188 +#: report/models.py:654 report/models.py:728 #: report/templates/report/inventree_build_order_base.html:117 #: stock/admin.py:55 stock/models.py:82 stock/templates/stock/location.html:125 #: templates/InvenTree/settings/notifications.html:19 @@ -542,7 +542,7 @@ msgstr "名称" #: templates/js/translated/order.js:298 templates/js/translated/part.js:1238 #: templates/js/translated/part.js:1483 templates/js/translated/part.js:1621 #: templates/js/translated/part.js:1958 templates/js/translated/part.js:2355 -#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2887 +#: templates/js/translated/part.js:2785 templates/js/translated/part.js:2896 #: templates/js/translated/plugin.js:80 #: templates/js/translated/purchase_order.js:1707 #: templates/js/translated/purchase_order.js:1850 @@ -602,7 +602,7 @@ msgstr "服务器错误" msgid "An error has been logged by the server." msgstr "服务器记录了一个错误。" -#: InvenTree/serializers.py:62 part/models.py:4134 +#: InvenTree/serializers.py:62 part/models.py:4143 msgid "Must be a valid number" msgstr "必须是有效数字" @@ -703,7 +703,7 @@ msgstr "远程图像文件的 URL" msgid "Downloading images from remote URL is not enabled" msgstr "未启用从远程 URL下载图像" -#: InvenTree/status.py:66 part/serializers.py:1120 +#: InvenTree/status.py:66 part/serializers.py:1156 msgid "Background worker check failed" msgstr "后台工作人员检查失败" @@ -981,14 +981,14 @@ msgstr "关于 InventTree" msgid "Build must be cancelled before it can be deleted" msgstr "在删除前必须取消生产" -#: build/api.py:281 part/models.py:4012 templates/js/translated/bom.js:997 +#: build/api.py:281 part/models.py:4021 templates/js/translated/bom.js:997 #: templates/js/translated/bom.js:1037 templates/js/translated/build.js:2521 #: templates/js/translated/table_filters.js:190 #: templates/js/translated/table_filters.js:583 msgid "Consumable" msgstr "" -#: build/api.py:282 part/models.py:4006 part/templates/part/upload_bom.html:58 +#: build/api.py:282 part/models.py:4015 part/templates/part/upload_bom.html:58 #: templates/js/translated/bom.js:1001 templates/js/translated/bom.js:1028 #: templates/js/translated/build.js:2530 #: templates/js/translated/table_filters.js:186 @@ -1003,7 +1003,7 @@ msgid "Tracked" msgstr "" #: build/api.py:285 part/admin.py:144 templates/js/translated/build.js:1741 -#: templates/js/translated/build.js:2626 +#: templates/js/translated/build.js:2630 #: templates/js/translated/sales_order.js:1929 #: templates/js/translated/table_filters.js:571 msgid "Allocated" @@ -1059,7 +1059,7 @@ msgstr "相关生产订单" #: build/models.py:174 order/models.py:430 order/models.py:886 #: order/models.py:1264 order/models.py:1981 part/admin.py:417 -#: part/models.py:4027 part/templates/part/upload_bom.html:54 +#: part/models.py:4036 part/templates/part/upload_bom.html:54 #: report/templates/report/inventree_bill_of_materials_report.html:139 #: report/templates/report/inventree_po_report_base.html:28 #: report/templates/report/inventree_return_order_report_base.html:26 @@ -1091,11 +1091,11 @@ msgstr "此次生产匹配的订单" #: build/models.py:199 build/templates/build/build_base.html:97 #: build/templates/build/detail.html:29 company/models.py:1044 #: order/models.py:1389 order/models.py:1532 order/models.py:1533 -#: part/api.py:1528 part/models.py:389 part/models.py:3003 part/models.py:3147 -#: part/models.py:3291 part/models.py:3314 part/models.py:3335 -#: part/models.py:3357 part/models.py:3458 part/models.py:3754 -#: part/models.py:3885 part/models.py:3978 part/models.py:4339 -#: part/serializers.py:1066 part/serializers.py:1631 +#: part/api.py:1528 part/api.py:1820 part/models.py:389 part/models.py:3003 +#: part/models.py:3147 part/models.py:3291 part/models.py:3314 +#: part/models.py:3335 part/models.py:3357 part/models.py:3467 +#: part/models.py:3763 part/models.py:3894 part/models.py:3987 +#: part/models.py:4348 part/serializers.py:1102 part/serializers.py:1677 #: part/templates/part/part_app_base.html:8 #: part/templates/part/part_pricing.html:12 #: part/templates/part/upload_bom.html:52 @@ -1106,7 +1106,7 @@ msgstr "此次生产匹配的订单" #: report/templates/report/inventree_return_order_report_base.html:24 #: report/templates/report/inventree_slr_report.html:102 #: report/templates/report/inventree_so_report_base.html:27 -#: stock/serializers.py:252 stock/serializers.py:662 +#: stock/serializers.py:253 stock/serializers.py:675 #: templates/InvenTree/search.html:82 #: templates/email/build_order_completed.html:17 #: templates/email/build_order_required_stock.html:17 @@ -1193,8 +1193,8 @@ msgstr "生产状态" msgid "Build status code" msgstr "生产状态代码" -#: build/models.py:264 build/serializers.py:280 order/serializers.py:549 -#: stock/models.py:826 stock/serializers.py:1300 +#: build/models.py:264 build/serializers.py:280 order/serializers.py:571 +#: stock/models.py:826 stock/serializers.py:1319 #: templates/js/translated/purchase_order.js:1129 msgid "Batch Code" msgstr "批量代码" @@ -1293,57 +1293,57 @@ msgstr "商品二维码" msgid "Project code for this build order" msgstr "此构建订单的优先级" -#: build/models.py:559 +#: build/models.py:575 #, python-brace-format msgid "Build order {build} has been completed" msgstr "生产订单 {build} 已完成" -#: build/models.py:565 +#: build/models.py:581 msgid "A build order has been completed" msgstr "生产订单已完成" -#: build/models.py:783 build/models.py:858 +#: build/models.py:799 build/models.py:874 msgid "No build output specified" msgstr "未指定生产产出" -#: build/models.py:786 +#: build/models.py:802 msgid "Build output is already completed" msgstr "生产产出已完成" -#: build/models.py:789 +#: build/models.py:805 msgid "Build output does not match Build Order" msgstr "生产产出与订单不匹配" -#: build/models.py:862 build/serializers.py:223 build/serializers.py:262 -#: build/serializers.py:831 order/models.py:526 order/serializers.py:401 -#: order/serializers.py:544 part/serializers.py:1423 part/serializers.py:1789 -#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:450 +#: build/models.py:878 build/serializers.py:223 build/serializers.py:262 +#: build/serializers.py:831 order/models.py:526 order/serializers.py:423 +#: order/serializers.py:566 part/serializers.py:1460 part/serializers.py:1835 +#: stock/models.py:665 stock/models.py:1477 stock/serializers.py:458 msgid "Quantity must be greater than zero" msgstr "数量必须大于0" -#: build/models.py:867 build/serializers.py:228 +#: build/models.py:883 build/serializers.py:228 #, fuzzy #| msgid "Quantity must be greater than zero" msgid "Quantity cannot be greater than the output quantity" msgstr "数量必须大于0" -#: build/models.py:924 build/serializers.py:533 +#: build/models.py:940 build/serializers.py:533 #, python-brace-format msgid "Build output {serial} has not passed all required tests" msgstr "" -#: build/models.py:1286 +#: build/models.py:1302 #, fuzzy #| msgid "Build Notes" msgid "Build object" msgstr "生产备注" -#: build/models.py:1300 build/models.py:1558 build/serializers.py:210 +#: build/models.py:1316 build/models.py:1574 build/serializers.py:210 #: build/serializers.py:247 build/templates/build/build_base.html:102 -#: build/templates/build/detail.html:34 common/models.py:2432 -#: order/models.py:1247 order/models.py:1902 order/serializers.py:1306 +#: build/templates/build/detail.html:34 common/models.py:2453 +#: order/models.py:1247 order/models.py:1902 order/serializers.py:1328 #: order/templates/order/order_wizard/match_parts.html:30 part/admin.py:416 -#: part/forms.py:48 part/models.py:3161 part/models.py:4000 +#: part/forms.py:48 part/models.py:3161 part/models.py:4009 #: part/templates/part/part_pricing.html:16 #: part/templates/part/upload_bom.html:53 #: report/templates/report/inventree_bill_of_materials_report.html:138 @@ -1353,7 +1353,7 @@ msgstr "生产备注" #: report/templates/report/inventree_so_report_base.html:29 #: report/templates/report/inventree_test_report_base.html:90 #: report/templates/report/inventree_test_report_base.html:170 -#: stock/admin.py:160 stock/serializers.py:441 +#: stock/admin.py:160 stock/serializers.py:449 #: stock/templates/stock/item_base.html:287 #: stock/templates/stock/item_base.html:295 #: stock/templates/stock/item_base.html:342 @@ -1365,7 +1365,7 @@ msgstr "生产备注" #: templates/js/translated/company.js:1808 #: templates/js/translated/model_renderers.js:230 #: templates/js/translated/order.js:304 templates/js/translated/part.js:961 -#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3332 +#: templates/js/translated/part.js:1811 templates/js/translated/part.js:3341 #: templates/js/translated/pricing.js:381 #: templates/js/translated/pricing.js:474 #: templates/js/translated/pricing.js:522 @@ -1385,42 +1385,42 @@ msgstr "生产备注" msgid "Quantity" msgstr "数量" -#: build/models.py:1301 +#: build/models.py:1317 #, fuzzy #| msgid "Stock required for build order" msgid "Required quantity for build order" msgstr "生产订单所需的库存" -#: build/models.py:1381 +#: build/models.py:1397 msgid "Build item must specify a build output, as master part is marked as trackable" msgstr "生产项必须指定生产产出,因为主部件已经被标记为可追踪的" -#: build/models.py:1390 +#: build/models.py:1406 #, python-brace-format msgid "Allocated quantity ({q}) must not exceed available stock quantity ({a})" msgstr "分配数量 ({q}) 不得超过可用库存数量 ({a})" -#: build/models.py:1400 order/models.py:1853 +#: build/models.py:1416 order/models.py:1853 msgid "Stock item is over-allocated" msgstr "库存物品分配过度!" -#: build/models.py:1406 order/models.py:1856 +#: build/models.py:1422 order/models.py:1856 msgid "Allocation quantity must be greater than zero" msgstr "分配数量必须大于0" -#: build/models.py:1412 +#: build/models.py:1428 msgid "Quantity must be 1 for serialized stock" msgstr "序列化库存的数量必须是 1" -#: build/models.py:1473 +#: build/models.py:1489 #, fuzzy #| msgid "Selected stock item not found in BOM" msgid "Selected stock item does not match BOM line" msgstr "在BOM中找不到选定的库存项" -#: build/models.py:1545 build/serializers.py:811 order/serializers.py:1150 -#: order/serializers.py:1171 stock/serializers.py:544 stock/serializers.py:1019 -#: stock/serializers.py:1131 stock/templates/stock/item_base.html:10 +#: build/models.py:1561 build/serializers.py:811 order/serializers.py:1172 +#: order/serializers.py:1193 stock/serializers.py:552 stock/serializers.py:1038 +#: stock/serializers.py:1150 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:1742 @@ -1435,19 +1435,19 @@ msgstr "在BOM中找不到选定的库存项" msgid "Stock Item" msgstr "库存项" -#: build/models.py:1546 +#: build/models.py:1562 msgid "Source stock item" msgstr "源库存项" -#: build/models.py:1559 +#: build/models.py:1575 msgid "Stock quantity to allocate to build" msgstr "分配到生产的数量" -#: build/models.py:1567 +#: build/models.py:1583 msgid "Install into" msgstr "安装到" -#: build/models.py:1568 +#: build/models.py:1584 msgid "Destination stock item" msgstr "目标库存项" @@ -1484,8 +1484,8 @@ msgstr "对于可追踪的部件,需要整数型数值" msgid "Integer quantity required, as the bill of materials contains trackable parts" msgstr "需要整数型数值,因为BOM包含可追踪的部件" -#: build/serializers.py:287 order/serializers.py:557 order/serializers.py:1310 -#: stock/serializers.py:461 templates/js/translated/purchase_order.js:1153 +#: build/serializers.py:287 order/serializers.py:579 order/serializers.py:1332 +#: stock/serializers.py:469 templates/js/translated/purchase_order.js:1153 #: templates/js/translated/stock.js:367 templates/js/translated/stock.js:565 msgid "Serial Numbers" msgstr "序列号" @@ -1510,10 +1510,10 @@ msgstr "以下序列号已存在或无效" msgid "A list of build outputs must be provided" msgstr "必须提供生产产出列表" -#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:533 -#: order/serializers.py:641 order/serializers.py:1646 part/serializers.py:1086 -#: stock/serializers.py:472 stock/serializers.py:627 stock/serializers.py:723 -#: stock/serializers.py:1163 stock/serializers.py:1419 +#: build/serializers.py:426 build/serializers.py:498 order/serializers.py:555 +#: order/serializers.py:663 order/serializers.py:1668 part/serializers.py:1122 +#: stock/serializers.py:480 stock/serializers.py:640 stock/serializers.py:736 +#: stock/serializers.py:1182 stock/serializers.py:1438 #: stock/templates/stock/item_base.html:394 #: templates/js/translated/barcode.js:547 #: templates/js/translated/barcode.js:795 templates/js/translated/build.js:999 @@ -1558,8 +1558,8 @@ msgstr "已完成生产产出的仓储地点" #: build/serializers.py:505 build/templates/build/build_base.html:151 #: build/templates/build/detail.html:62 order/models.py:910 -#: order/models.py:2005 order/serializers.py:565 stock/admin.py:165 -#: stock/serializers.py:774 stock/serializers.py:1307 +#: order/models.py:2005 order/serializers.py:587 stock/admin.py:165 +#: stock/serializers.py:787 stock/serializers.py:1326 #: stock/templates/stock/item_base.html:427 #: templates/js/translated/barcode.js:252 templates/js/translated/build.js:2189 #: templates/js/translated/purchase_order.js:1308 @@ -1631,7 +1631,7 @@ msgstr "接受库存项未被完成分配至此生产订单" msgid "Required stock has not been fully allocated" msgstr "所需库存尚未完全分配" -#: build/serializers.py:684 order/serializers.py:280 order/serializers.py:1213 +#: build/serializers.py:684 order/serializers.py:291 order/serializers.py:1235 msgid "Accept Incomplete" msgstr "接受未完成" @@ -1671,11 +1671,11 @@ msgstr "删除参数" msgid "bom_item.part must point to the same part as the build order" msgstr "bom_item.part 必须与生产订单指向相同的部件" -#: build/serializers.py:817 stock/serializers.py:1032 +#: build/serializers.py:817 stock/serializers.py:1051 msgid "Item must be in stock" msgstr "项目必须在库存中" -#: build/serializers.py:865 order/serializers.py:1204 +#: build/serializers.py:865 order/serializers.py:1226 #, python-brace-format msgid "Available quantity ({q}) exceeded" msgstr "可用量 ({q}) 超出了限制" @@ -1688,7 +1688,7 @@ msgstr "对于被追踪的部件的分配,必须指定生产产出" msgid "Build output cannot be specified for allocation of untracked parts" msgstr "对于未被追踪的部件,无法指定生产产出" -#: build/serializers.py:902 order/serializers.py:1456 +#: build/serializers.py:902 order/serializers.py:1478 msgid "Allocation items must be provided" msgstr "必须提供分配的项" @@ -1728,44 +1728,45 @@ msgstr "可选项目" msgid "Allocate optional BOM items to build order" msgstr "分配可选的BOM项目来建立订单" -#: build/serializers.py:1096 part/models.py:3895 part/models.py:4331 +#: build/serializers.py:1097 part/models.py:3904 part/models.py:4340 #: stock/api.py:745 msgid "BOM Item" msgstr "BOM项" -#: build/serializers.py:1105 templates/js/translated/index.js:130 +#: build/serializers.py:1106 templates/js/translated/index.js:130 msgid "Allocated Stock" msgstr "" -#: build/serializers.py:1110 part/admin.py:132 part/bom.py:173 -#: part/serializers.py:1441 part/templates/part/part_base.html:210 -#: templates/js/translated/bom.js:1202 templates/js/translated/build.js:2614 -#: templates/js/translated/part.js:709 templates/js/translated/part.js:2148 +#: build/serializers.py:1111 part/admin.py:132 part/bom.py:173 +#: part/serializers.py:815 part/serializers.py:1478 +#: part/templates/part/part_base.html:210 templates/js/translated/bom.js:1208 +#: templates/js/translated/build.js:2614 templates/js/translated/part.js:709 +#: templates/js/translated/part.js:2148 #: templates/js/translated/table_filters.js:170 msgid "On Order" msgstr "" -#: build/serializers.py:1115 part/serializers.py:1443 +#: build/serializers.py:1116 part/serializers.py:1480 #: templates/js/translated/build.js:2618 #: templates/js/translated/table_filters.js:360 msgid "In Production" msgstr "正在生产" -#: build/serializers.py:1120 part/bom.py:172 part/serializers.py:1454 +#: build/serializers.py:1121 part/bom.py:172 part/serializers.py:1491 #: part/templates/part/part_base.html:192 #: templates/js/translated/sales_order.js:1893 msgid "Available Stock" msgstr "可用库存" -#: build/tasks.py:149 +#: build/tasks.py:171 msgid "Stock required for build order" msgstr "生产订单所需的库存" -#: build/tasks.py:166 +#: build/tasks.py:188 msgid "Overdue Build Order" msgstr "超时构建顺序" -#: build/tasks.py:171 +#: build/tasks.py:193 #, python-brace-format msgid "Build order {bo} is now overdue" msgstr "生成订单 {bo} 现在已过期" @@ -2069,29 +2070,35 @@ msgstr "订单所需部件" msgid "Order Parts" msgstr "订购商品" -#: build/templates/build/detail.html:210 +#: build/templates/build/detail.html:205 +#, fuzzy +#| msgid "Untracked stock has been fully allocated for this Build Order" +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:214 +#: build/templates/build/detail.html:219 msgid "Create new build output" msgstr "创建新构建输出" -#: build/templates/build/detail.html:215 +#: build/templates/build/detail.html:220 msgid "New Build Output" msgstr "新建构建输出" -#: build/templates/build/detail.html:232 build/templates/build/sidebar.html:15 +#: build/templates/build/detail.html:237 build/templates/build/sidebar.html:15 #, fuzzy #| msgid "Minimum Stock" msgid "Consumed Stock" msgstr "最低库存" -#: build/templates/build/detail.html:244 +#: build/templates/build/detail.html:249 msgid "Completed Build Outputs" msgstr "已完成构建输出" -#: build/templates/build/detail.html:256 build/templates/build/sidebar.html:19 +#: 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 @@ -2107,15 +2114,15 @@ msgstr "已完成构建输出" msgid "Attachments" msgstr "附件" -#: build/templates/build/detail.html:271 +#: build/templates/build/detail.html:276 msgid "Build Notes" msgstr "生产备注" -#: build/templates/build/detail.html:426 +#: build/templates/build/detail.html:434 msgid "Allocation Complete" msgstr "分配完成" -#: build/templates/build/detail.html:427 +#: build/templates/build/detail.html:435 #, fuzzy #| msgid "Required stock has not been fully allocated" msgid "All lines have been fully allocated" @@ -2200,1432 +2207,1450 @@ msgstr "商品描述" msgid "User or group responsible for this project" msgstr "负责此订单的用户或群组" -#: common/models.py:737 +#: common/models.py:744 msgid "Settings key (must be unique - case insensitive)" msgstr "设置键值(必须是唯一的 - 大小写不敏感)" -#: common/models.py:741 +#: common/models.py:748 msgid "Settings value" msgstr "设定值" -#: common/models.py:793 +#: common/models.py:800 msgid "Chosen value is not a valid option" msgstr "选择的值不是一个有效的选项" -#: common/models.py:809 +#: common/models.py:816 msgid "Value must be a boolean value" msgstr "值必须是布尔量" -#: common/models.py:817 +#: common/models.py:824 msgid "Value must be an integer value" msgstr "值必须为整数" -#: common/models.py:854 +#: common/models.py:861 msgid "Key string must be unique" msgstr "关键字必须是唯一的" -#: common/models.py:1086 +#: common/models.py:1093 msgid "No group" msgstr "无群组" -#: common/models.py:1129 +#: common/models.py:1136 msgid "An empty domain is not allowed." msgstr "不允许空域。" -#: common/models.py:1131 +#: common/models.py:1138 #, python-brace-format msgid "Invalid domain name: {domain}" msgstr "无效的域名: {domain}" -#: common/models.py:1143 +#: common/models.py:1150 #, fuzzy #| msgid "Subcategories" msgid "No plugin" msgstr "子类别" -#: common/models.py:1229 +#: common/models.py:1236 msgid "Restart required" msgstr "需要重启" -#: common/models.py:1231 +#: common/models.py:1238 msgid "A setting has been changed which requires a server restart" msgstr "设置已更改,需要服务器重启" -#: common/models.py:1238 +#: common/models.py:1245 #, fuzzy #| msgid "Printing Actions" msgid "Pending migrations" msgstr "打印操作" -#: common/models.py:1239 +#: common/models.py:1246 msgid "Number of pending database migrations" msgstr "" -#: common/models.py:1244 +#: common/models.py:1251 msgid "Server Instance Name" msgstr "服务器实例名称" -#: common/models.py:1246 +#: common/models.py:1253 msgid "String descriptor for the server instance" msgstr "" -#: common/models.py:1250 +#: common/models.py:1257 msgid "Use instance name" msgstr "" -#: common/models.py:1251 +#: common/models.py:1258 msgid "Use the instance name in the title-bar" msgstr "" -#: common/models.py:1256 +#: common/models.py:1263 msgid "Restrict showing `about`" msgstr "" -#: common/models.py:1257 +#: common/models.py:1264 msgid "Show the `about` modal only to superusers" msgstr "" -#: common/models.py:1262 company/models.py:107 company/models.py:108 +#: common/models.py:1269 company/models.py:107 company/models.py:108 msgid "Company name" msgstr "公司名称" -#: common/models.py:1263 +#: common/models.py:1270 msgid "Internal company name" msgstr "内部公司名称" -#: common/models.py:1267 +#: common/models.py:1274 msgid "Base URL" msgstr "" -#: common/models.py:1268 +#: common/models.py:1275 msgid "Base URL for server instance" msgstr "" -#: common/models.py:1274 +#: common/models.py:1281 msgid "Default Currency" msgstr "" -#: common/models.py:1275 +#: common/models.py:1282 msgid "Select base currency for pricing calculations" msgstr "" -#: common/models.py:1281 +#: common/models.py:1288 msgid "Currency Update Interval" msgstr "" -#: common/models.py:1283 +#: common/models.py:1290 msgid "How often to update exchange rates (set to zero to disable)" msgstr "" -#: common/models.py:1286 common/models.py:1342 common/models.py:1355 -#: common/models.py:1363 common/models.py:1372 common/models.py:1381 -#: common/models.py:1583 common/models.py:1605 common/models.py:1714 -#: common/models.py:1977 +#: common/models.py:1293 common/models.py:1349 common/models.py:1362 +#: common/models.py:1370 common/models.py:1379 common/models.py:1388 +#: common/models.py:1590 common/models.py:1612 common/models.py:1727 +#: common/models.py:1998 msgid "days" msgstr "天" -#: common/models.py:1290 +#: common/models.py:1297 msgid "Currency Update Plugin" msgstr "" -#: common/models.py:1291 +#: common/models.py:1298 msgid "Currency update plugin to use" msgstr "" -#: common/models.py:1296 +#: common/models.py:1303 msgid "Download from URL" msgstr "" -#: common/models.py:1298 +#: common/models.py:1305 msgid "Allow download of remote images and files from external URL" msgstr "" -#: common/models.py:1304 +#: common/models.py:1311 msgid "Download Size Limit" msgstr "" -#: common/models.py:1305 +#: common/models.py:1312 msgid "Maximum allowable download size for remote image" msgstr "" -#: common/models.py:1311 +#: common/models.py:1318 msgid "User-agent used to download from URL" msgstr "" -#: common/models.py:1313 +#: common/models.py:1320 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:1318 +#: common/models.py:1325 msgid "Strict URL Validation" msgstr "" -#: common/models.py:1319 +#: common/models.py:1326 msgid "Require schema specification when validating URLs" msgstr "" -#: common/models.py:1324 +#: common/models.py:1331 msgid "Require confirm" msgstr "" -#: common/models.py:1325 +#: common/models.py:1332 msgid "Require explicit user confirmation for certain action." msgstr "" -#: common/models.py:1330 +#: common/models.py:1337 msgid "Tree Depth" msgstr "" -#: common/models.py:1332 +#: common/models.py:1339 msgid "Default tree depth for treeview. Deeper levels can be lazy loaded as they are needed." msgstr "" -#: common/models.py:1338 +#: common/models.py:1345 msgid "Update Check Interval" msgstr "" -#: common/models.py:1339 +#: common/models.py:1346 msgid "How often to check for updates (set to zero to disable)" msgstr "" -#: common/models.py:1345 +#: common/models.py:1352 msgid "Automatic Backup" msgstr "" -#: common/models.py:1346 +#: common/models.py:1353 msgid "Enable automatic backup of database and media files" msgstr "" -#: common/models.py:1351 +#: common/models.py:1358 msgid "Auto Backup Interval" msgstr "" -#: common/models.py:1352 +#: common/models.py:1359 msgid "Specify number of days between automated backup events" msgstr "" -#: common/models.py:1358 +#: common/models.py:1365 msgid "Task Deletion Interval" msgstr "" -#: common/models.py:1360 +#: common/models.py:1367 msgid "Background task results will be deleted after specified number of days" msgstr "" -#: common/models.py:1367 +#: common/models.py:1374 msgid "Error Log Deletion Interval" msgstr "" -#: common/models.py:1369 +#: common/models.py:1376 msgid "Error logs will be deleted after specified number of days" msgstr "" -#: common/models.py:1376 +#: common/models.py:1383 msgid "Notification Deletion Interval" msgstr "" -#: common/models.py:1378 +#: common/models.py:1385 msgid "User notifications will be deleted after specified number of days" msgstr "" -#: common/models.py:1385 templates/InvenTree/settings/sidebar.html:31 +#: common/models.py:1392 templates/InvenTree/settings/sidebar.html:31 msgid "Barcode Support" msgstr "" -#: common/models.py:1386 +#: common/models.py:1393 #, fuzzy #| msgid "Enable barcode scanner support" msgid "Enable barcode scanner support in the web interface" msgstr "启用条形码扫描支持" -#: common/models.py:1391 +#: common/models.py:1398 msgid "Barcode Input Delay" msgstr "" -#: common/models.py:1392 +#: common/models.py:1399 msgid "Barcode input processing delay time" msgstr "" -#: common/models.py:1398 +#: common/models.py:1405 msgid "Barcode Webcam Support" msgstr "" -#: common/models.py:1399 +#: common/models.py:1406 msgid "Allow barcode scanning via webcam in browser" msgstr "" -#: common/models.py:1404 +#: common/models.py:1411 #, fuzzy #| msgid "Part description" msgid "Part Revisions" msgstr "商品描述" -#: common/models.py:1405 +#: common/models.py:1412 #, fuzzy #| msgid "Enable internal prices for parts" msgid "Enable revision field for Part" msgstr "启用内部商品价格" -#: common/models.py:1410 +#: common/models.py:1417 msgid "IPN Regex" msgstr "" -#: common/models.py:1411 +#: common/models.py:1418 msgid "Regular expression pattern for matching Part IPN" msgstr "" -#: common/models.py:1414 +#: common/models.py:1421 msgid "Allow Duplicate IPN" msgstr "" -#: common/models.py:1415 +#: common/models.py:1422 msgid "Allow multiple parts to share the same IPN" msgstr "" -#: common/models.py:1420 +#: common/models.py:1427 msgid "Allow Editing IPN" msgstr "" -#: common/models.py:1421 +#: common/models.py:1428 msgid "Allow changing the IPN value while editing a part" msgstr "" -#: common/models.py:1426 +#: common/models.py:1433 msgid "Copy Part BOM Data" msgstr "" -#: common/models.py:1427 +#: common/models.py:1434 msgid "Copy BOM data by default when duplicating a part" msgstr "" -#: common/models.py:1432 +#: common/models.py:1439 msgid "Copy Part Parameter Data" msgstr "" -#: common/models.py:1433 +#: common/models.py:1440 msgid "Copy parameter data by default when duplicating a part" msgstr "" -#: common/models.py:1438 +#: common/models.py:1445 msgid "Copy Part Test Data" msgstr "" -#: common/models.py:1439 +#: common/models.py:1446 msgid "Copy test data by default when duplicating a part" msgstr "" -#: common/models.py:1444 +#: common/models.py:1451 msgid "Copy Category Parameter Templates" msgstr "" -#: common/models.py:1445 +#: common/models.py:1452 msgid "Copy category parameter templates when creating a part" msgstr "" -#: common/models.py:1450 part/admin.py:108 part/models.py:3762 -#: report/models.py:180 stock/serializers.py:95 +#: common/models.py:1457 part/admin.py:108 part/models.py:3771 +#: report/models.py:181 stock/serializers.py:96 #: templates/js/translated/table_filters.js:139 #: templates/js/translated/table_filters.js:767 msgid "Template" msgstr "模板" -#: common/models.py:1451 +#: common/models.py:1458 msgid "Parts are templates by default" msgstr "" -#: common/models.py:1456 part/admin.py:91 part/admin.py:431 part/models.py:1015 -#: templates/js/translated/bom.js:1633 +#: common/models.py:1463 part/admin.py:91 part/admin.py:431 part/models.py:1015 +#: 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:1457 +#: common/models.py:1464 msgid "Parts can be assembled from other components by default" msgstr "" -#: common/models.py:1462 part/admin.py:95 part/models.py:1021 +#: common/models.py:1469 part/admin.py:95 part/models.py:1021 #: templates/js/translated/table_filters.js:729 msgid "Component" msgstr "组件" -#: common/models.py:1463 +#: common/models.py:1470 msgid "Parts can be used as sub-components by default" msgstr "" -#: common/models.py:1468 part/admin.py:100 part/models.py:1033 +#: common/models.py:1475 part/admin.py:100 part/models.py:1033 msgid "Purchaseable" msgstr "可购买" -#: common/models.py:1469 +#: common/models.py:1476 msgid "Parts are purchaseable by default" msgstr "商品默认可购买" -#: common/models.py:1474 part/admin.py:104 part/models.py:1039 +#: common/models.py:1481 part/admin.py:104 part/models.py:1039 #: templates/js/translated/table_filters.js:755 msgid "Salable" msgstr "可销售" -#: common/models.py:1475 +#: common/models.py:1482 msgid "Parts are salable by default" msgstr "商品默认可销售" -#: common/models.py:1480 part/admin.py:113 part/models.py:1027 +#: common/models.py:1487 part/admin.py:113 part/models.py:1027 #: 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:1481 +#: common/models.py:1488 msgid "Parts are trackable by default" msgstr "商品默认可跟踪" -#: common/models.py:1486 part/admin.py:117 part/models.py:1049 +#: common/models.py:1493 part/admin.py:117 part/models.py:1049 #: 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:1487 +#: common/models.py:1494 msgid "Parts are virtual by default" msgstr "商品默认是虚拟的" -#: common/models.py:1492 +#: common/models.py:1499 msgid "Show Import in Views" msgstr "视图中显示导入" -#: common/models.py:1493 +#: common/models.py:1500 msgid "Display the import wizard in some part views" msgstr "在一些商品视图中显示导入向导" -#: common/models.py:1498 +#: common/models.py:1505 msgid "Show related parts" msgstr "显示相关商品" -#: common/models.py:1499 +#: common/models.py:1506 msgid "Display related parts for a part" msgstr "" -#: common/models.py:1504 +#: common/models.py:1511 msgid "Initial Stock Data" msgstr "" -#: common/models.py:1505 +#: common/models.py:1512 msgid "Allow creation of initial stock when adding a new part" msgstr "" -#: common/models.py:1510 templates/js/translated/part.js:107 +#: common/models.py:1517 templates/js/translated/part.js:107 msgid "Initial Supplier Data" msgstr "" -#: common/models.py:1512 +#: common/models.py:1519 msgid "Allow creation of initial supplier data when adding a new part" msgstr "" -#: common/models.py:1518 +#: common/models.py:1525 msgid "Part Name Display Format" msgstr "" -#: common/models.py:1519 +#: common/models.py:1526 msgid "Format to display the part name" msgstr "" -#: common/models.py:1525 +#: common/models.py:1532 msgid "Part Category Default Icon" msgstr "" -#: common/models.py:1526 +#: common/models.py:1533 msgid "Part category default icon (empty means no icon)" msgstr "" -#: common/models.py:1530 +#: common/models.py:1537 #, fuzzy #| msgid "Parameter units" msgid "Enforce Parameter Units" msgstr "参数单位" -#: common/models.py:1532 +#: common/models.py:1539 msgid "If units are provided, parameter values must match the specified units" msgstr "" -#: common/models.py:1538 +#: common/models.py:1545 msgid "Minimum Pricing Decimal Places" msgstr "" -#: common/models.py:1540 +#: common/models.py:1547 msgid "Minimum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1546 +#: common/models.py:1553 msgid "Maximum Pricing Decimal Places" msgstr "" -#: common/models.py:1548 +#: common/models.py:1555 msgid "Maximum number of decimal places to display when rendering pricing data" msgstr "" -#: common/models.py:1554 +#: common/models.py:1561 msgid "Use Supplier Pricing" msgstr "" -#: common/models.py:1556 +#: common/models.py:1563 msgid "Include supplier price breaks in overall pricing calculations" msgstr "" -#: common/models.py:1562 +#: common/models.py:1569 msgid "Purchase History Override" msgstr "" -#: common/models.py:1564 +#: common/models.py:1571 msgid "Historical purchase order pricing overrides supplier price breaks" msgstr "" -#: common/models.py:1570 +#: common/models.py:1577 msgid "Use Stock Item Pricing" msgstr "" -#: common/models.py:1572 +#: common/models.py:1579 msgid "Use pricing from manually entered stock data for pricing calculations" msgstr "" -#: common/models.py:1578 +#: common/models.py:1585 msgid "Stock Item Pricing Age" msgstr "" -#: common/models.py:1580 +#: common/models.py:1587 msgid "Exclude stock items older than this number of days from pricing calculations" msgstr "" -#: common/models.py:1587 +#: common/models.py:1594 msgid "Use Variant Pricing" msgstr "" -#: common/models.py:1588 +#: common/models.py:1595 msgid "Include variant pricing in overall pricing calculations" msgstr "" -#: common/models.py:1593 +#: common/models.py:1600 msgid "Active Variants Only" msgstr "" -#: common/models.py:1595 +#: common/models.py:1602 msgid "Only use active variant parts for calculating variant pricing" msgstr "" -#: common/models.py:1601 +#: common/models.py:1608 msgid "Pricing Rebuild Interval" msgstr "" -#: common/models.py:1603 +#: common/models.py:1610 msgid "Number of days before part pricing is automatically updated" msgstr "" -#: common/models.py:1610 +#: common/models.py:1617 msgid "Internal Prices" msgstr "内部价格" -#: common/models.py:1611 +#: common/models.py:1618 msgid "Enable internal prices for parts" msgstr "启用内部商品价格" -#: common/models.py:1616 +#: common/models.py:1623 msgid "Internal Price Override" msgstr "" -#: common/models.py:1618 +#: common/models.py:1625 msgid "If available, internal prices override price range calculations" msgstr "" -#: common/models.py:1624 +#: common/models.py:1631 msgid "Enable label printing" msgstr "" -#: common/models.py:1625 +#: common/models.py:1632 msgid "Enable label printing from the web interface" msgstr "" -#: common/models.py:1630 +#: common/models.py:1637 msgid "Label Image DPI" msgstr "" -#: common/models.py:1632 +#: common/models.py:1639 msgid "DPI resolution when generating image files to supply to label printing plugins" msgstr "" -#: common/models.py:1638 +#: common/models.py:1645 msgid "Enable Reports" msgstr "" -#: common/models.py:1639 +#: common/models.py:1646 msgid "Enable generation of reports" msgstr "" -#: common/models.py:1644 templates/stats.html:25 +#: common/models.py:1651 templates/stats.html:25 msgid "Debug Mode" msgstr "调试模式" -#: common/models.py:1645 +#: common/models.py:1652 msgid "Generate reports in debug mode (HTML output)" msgstr "在调试模式生成报告(HTML输出)" -#: common/models.py:1650 plugin/builtin/labels/label_sheet.py:28 -#: report/models.py:201 +#: common/models.py:1657 +#, fuzzy +#| msgid "No Reports Found" +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:202 msgid "Page Size" msgstr "页面大小" -#: common/models.py:1651 +#: common/models.py:1664 msgid "Default page size for PDF reports" msgstr "PDF 报表默认页面大小" -#: common/models.py:1656 +#: common/models.py:1669 msgid "Enable Test Reports" msgstr "" -#: common/models.py:1657 +#: common/models.py:1670 msgid "Enable generation of test reports" msgstr "启用生成测试报表" -#: common/models.py:1662 +#: common/models.py:1675 msgid "Attach Test Reports" msgstr "" -#: common/models.py:1664 +#: 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:1670 +#: common/models.py:1683 msgid "Globally Unique Serials" msgstr "" -#: common/models.py:1671 +#: common/models.py:1684 msgid "Serial numbers for stock items must be globally unique" msgstr "" -#: common/models.py:1676 +#: common/models.py:1689 msgid "Autofill Serial Numbers" msgstr "" -#: common/models.py:1677 +#: common/models.py:1690 msgid "Autofill serial numbers in forms" msgstr "" -#: common/models.py:1682 +#: common/models.py:1695 msgid "Delete Depleted Stock" msgstr "" -#: common/models.py:1684 +#: common/models.py:1697 msgid "Determines default behaviour when a stock item is depleted" msgstr "" -#: common/models.py:1690 +#: common/models.py:1703 msgid "Batch Code Template" msgstr "" -#: common/models.py:1692 +#: common/models.py:1705 msgid "Template for generating default batch codes for stock items" msgstr "" -#: common/models.py:1697 +#: common/models.py:1710 msgid "Stock Expiry" msgstr "库存到期" -#: common/models.py:1698 +#: common/models.py:1711 msgid "Enable stock expiry functionality" msgstr "启用库存到期功能" -#: common/models.py:1703 +#: common/models.py:1716 msgid "Sell Expired Stock" msgstr "销售过期库存" -#: common/models.py:1704 +#: common/models.py:1717 msgid "Allow sale of expired stock" msgstr "允许销售过期库存" -#: common/models.py:1709 +#: common/models.py:1722 msgid "Stock Stale Time" msgstr "" -#: common/models.py:1711 +#: common/models.py:1724 msgid "Number of days stock items are considered stale before expiring" msgstr "" -#: common/models.py:1718 +#: common/models.py:1731 msgid "Build Expired Stock" msgstr "" -#: common/models.py:1719 +#: common/models.py:1732 msgid "Allow building with expired stock" msgstr "" -#: common/models.py:1724 +#: common/models.py:1737 msgid "Stock Ownership Control" msgstr "库存所有权控制" -#: common/models.py:1725 +#: common/models.py:1738 msgid "Enable ownership control over stock locations and items" msgstr "" -#: common/models.py:1730 +#: common/models.py:1743 msgid "Stock Location Default Icon" msgstr "" -#: common/models.py:1731 +#: common/models.py:1744 msgid "Stock location default icon (empty means no icon)" msgstr "" -#: common/models.py:1735 +#: common/models.py:1748 #, fuzzy #| msgid "Select Stock Items" msgid "Show Installed Stock Items" msgstr "选择库存项" -#: common/models.py:1736 +#: common/models.py:1749 msgid "Display installed stock items in stock tables" msgstr "" -#: common/models.py:1741 +#: 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 "Build Order Reference Pattern" msgstr "" -#: common/models.py:1743 +#: common/models.py:1764 msgid "Required pattern for generating Build Order reference field" msgstr "" -#: common/models.py:1749 +#: common/models.py:1770 #, fuzzy #| msgid "Sales Orders" msgid "Enable Return Orders" msgstr "销售订单" -#: common/models.py:1750 +#: common/models.py:1771 msgid "Enable return order functionality in the user interface" msgstr "" -#: common/models.py:1755 +#: common/models.py:1776 #, fuzzy #| msgid "Build Order Reference" msgid "Return Order Reference Pattern" msgstr "相关生产订单" -#: common/models.py:1757 +#: common/models.py:1778 msgid "Required pattern for generating Return Order reference field" msgstr "" -#: common/models.py:1763 +#: common/models.py:1784 #, fuzzy #| msgid "Complete Build Order" msgid "Edit Completed Return Orders" msgstr "生产订单完成" -#: common/models.py:1765 +#: common/models.py:1786 msgid "Allow editing of return orders after they have been completed" msgstr "" -#: common/models.py:1771 +#: common/models.py:1792 msgid "Sales Order Reference Pattern" msgstr "" -#: common/models.py:1773 +#: common/models.py:1794 msgid "Required pattern for generating Sales Order reference field" msgstr "" -#: common/models.py:1779 +#: common/models.py:1800 msgid "Sales Order Default Shipment" msgstr "" -#: common/models.py:1780 +#: common/models.py:1801 msgid "Enable creation of default shipment with sales orders" msgstr "" -#: common/models.py:1785 +#: common/models.py:1806 msgid "Edit Completed Sales Orders" msgstr "" -#: common/models.py:1787 +#: common/models.py:1808 msgid "Allow editing of sales orders after they have been shipped or completed" msgstr "" -#: common/models.py:1793 +#: common/models.py:1814 msgid "Purchase Order Reference Pattern" msgstr "" -#: common/models.py:1795 +#: common/models.py:1816 msgid "Required pattern for generating Purchase Order reference field" msgstr "" -#: common/models.py:1801 +#: common/models.py:1822 msgid "Edit Completed Purchase Orders" msgstr "" -#: common/models.py:1803 +#: common/models.py:1824 msgid "Allow editing of purchase orders after they have been shipped or completed" msgstr "" -#: common/models.py:1809 +#: common/models.py:1830 #, fuzzy #| msgid "Create Purchase Order" msgid "Auto Complete Purchase Orders" msgstr "创建采购订单" -#: common/models.py:1811 +#: common/models.py:1832 msgid "Automatically mark purchase orders as complete when all line items are received" msgstr "" -#: common/models.py:1818 +#: common/models.py:1839 msgid "Enable password forgot" msgstr "" -#: common/models.py:1819 +#: common/models.py:1840 msgid "Enable password forgot function on the login pages" msgstr "" -#: common/models.py:1824 +#: common/models.py:1845 msgid "Enable registration" msgstr "" -#: common/models.py:1825 +#: common/models.py:1846 msgid "Enable self-registration for users on the login pages" msgstr "" -#: common/models.py:1830 +#: common/models.py:1851 msgid "Enable SSO" msgstr "" -#: common/models.py:1831 +#: common/models.py:1852 msgid "Enable SSO on the login pages" msgstr "" -#: common/models.py:1836 +#: common/models.py:1857 msgid "Enable SSO registration" msgstr "" -#: common/models.py:1838 +#: common/models.py:1859 msgid "Enable self-registration via SSO for users on the login pages" msgstr "" -#: common/models.py:1844 +#: common/models.py:1865 msgid "Email required" msgstr "" -#: common/models.py:1845 +#: common/models.py:1866 msgid "Require user to supply mail on signup" msgstr "" -#: common/models.py:1850 +#: common/models.py:1871 msgid "Auto-fill SSO users" msgstr "" -#: common/models.py:1852 +#: common/models.py:1873 msgid "Automatically fill out user-details from SSO account-data" msgstr "" -#: common/models.py:1858 +#: common/models.py:1879 msgid "Mail twice" msgstr "" -#: common/models.py:1859 +#: common/models.py:1880 msgid "On signup ask users twice for their mail" msgstr "" -#: common/models.py:1864 +#: common/models.py:1885 msgid "Password twice" msgstr "" -#: common/models.py:1865 +#: common/models.py:1886 msgid "On signup ask users twice for their password" msgstr "" -#: common/models.py:1870 +#: common/models.py:1891 msgid "Allowed domains" msgstr "" -#: common/models.py:1872 +#: common/models.py:1893 msgid "Restrict signup to certain domains (comma-separated, starting with @)" msgstr "" -#: common/models.py:1878 +#: common/models.py:1899 msgid "Group on signup" msgstr "" -#: common/models.py:1879 +#: common/models.py:1900 msgid "Group to which new users are assigned on registration" msgstr "" -#: common/models.py:1884 +#: common/models.py:1905 msgid "Enforce MFA" msgstr "" -#: common/models.py:1885 +#: common/models.py:1906 msgid "Users must use multifactor security." msgstr "" -#: common/models.py:1890 +#: common/models.py:1911 msgid "Check plugins on startup" msgstr "" -#: common/models.py:1892 +#: common/models.py:1913 msgid "Check that all plugins are installed on startup - enable in container environments" msgstr "" -#: common/models.py:1900 +#: common/models.py:1921 msgid "Check for plugin updates" msgstr "" -#: common/models.py:1901 +#: common/models.py:1922 msgid "Enable periodic checks for updates to installed plugins" msgstr "" -#: common/models.py:1907 +#: common/models.py:1928 msgid "Enable URL integration" msgstr "" -#: common/models.py:1908 +#: common/models.py:1929 msgid "Enable plugins to add URL routes" msgstr "" -#: common/models.py:1914 +#: common/models.py:1935 msgid "Enable navigation integration" msgstr "" -#: common/models.py:1915 +#: common/models.py:1936 msgid "Enable plugins to integrate into navigation" msgstr "" -#: common/models.py:1921 +#: common/models.py:1942 msgid "Enable app integration" msgstr "" -#: common/models.py:1922 +#: common/models.py:1943 msgid "Enable plugins to add apps" msgstr "" -#: common/models.py:1928 +#: common/models.py:1949 msgid "Enable schedule integration" msgstr "" -#: common/models.py:1929 +#: common/models.py:1950 msgid "Enable plugins to run scheduled tasks" msgstr "" -#: common/models.py:1935 +#: common/models.py:1956 msgid "Enable event integration" msgstr "" -#: common/models.py:1936 +#: common/models.py:1957 msgid "Enable plugins to respond to internal events" msgstr "" -#: common/models.py:1942 +#: common/models.py:1963 #, fuzzy #| msgid "Sales Orders" msgid "Enable project codes" msgstr "销售订单" -#: common/models.py:1943 +#: common/models.py:1964 msgid "Enable project codes for tracking projects" msgstr "" -#: common/models.py:1948 +#: common/models.py:1969 msgid "Stocktake Functionality" msgstr "" -#: common/models.py:1950 +#: common/models.py:1971 msgid "Enable stocktake functionality for recording stock levels and calculating stock value" msgstr "" -#: common/models.py:1956 +#: common/models.py:1977 #, fuzzy #| msgid "Exclude Location" msgid "Exclude External Locations" msgstr "排除地点" -#: common/models.py:1958 +#: common/models.py:1979 #, fuzzy #| msgid "Exclude stock items from this selected location" msgid "Exclude stock items in external locations from stocktake calculations" msgstr "从该选定的仓储地点排除库存项" -#: common/models.py:1964 +#: common/models.py:1985 msgid "Automatic Stocktake Period" msgstr "" -#: common/models.py:1966 +#: common/models.py:1987 msgid "Number of days between automatic stocktake recording (set to zero to disable)" msgstr "" -#: common/models.py:1972 +#: common/models.py:1993 msgid "Report Deletion Interval" msgstr "" -#: common/models.py:1974 +#: common/models.py:1995 msgid "Stocktake reports will be deleted after specified number of days" msgstr "" -#: common/models.py:1981 +#: common/models.py:2002 msgid "Display Users full names" msgstr "" -#: common/models.py:1982 +#: common/models.py:2003 msgid "Display Users full names instead of usernames" msgstr "" -#: common/models.py:1987 +#: common/models.py:2008 msgid "Block Until Tests Pass" msgstr "" -#: common/models.py:1989 +#: common/models.py:2010 msgid "Prevent build outputs from being completed until all required tests pass" msgstr "" -#: common/models.py:2002 common/models.py:2402 +#: common/models.py:2023 common/models.py:2423 msgid "Settings key (must be unique - case insensitive" msgstr "" -#: common/models.py:2043 +#: common/models.py:2064 #, fuzzy #| msgid "Build to allocate parts" msgid "Hide inactive parts" msgstr "生产以分配部件" -#: common/models.py:2045 +#: common/models.py:2066 msgid "Hide inactive parts in results displayed on the homepage" msgstr "" -#: common/models.py:2051 +#: common/models.py:2072 msgid "Show subscribed parts" msgstr "" -#: common/models.py:2052 +#: common/models.py:2073 msgid "Show subscribed parts on the homepage" msgstr "" -#: common/models.py:2057 +#: common/models.py:2078 msgid "Show subscribed categories" msgstr "" -#: common/models.py:2058 +#: common/models.py:2079 msgid "Show subscribed part categories on the homepage" msgstr "" -#: common/models.py:2063 +#: common/models.py:2084 msgid "Show latest parts" msgstr "显示最近商品" -#: common/models.py:2064 +#: common/models.py:2085 msgid "Show latest parts on the homepage" msgstr "在主页上显示最近商品" -#: common/models.py:2069 +#: common/models.py:2090 msgid "Show unvalidated BOMs" msgstr "" -#: common/models.py:2070 +#: common/models.py:2091 msgid "Show BOMs that await validation on the homepage" msgstr "" -#: common/models.py:2075 +#: common/models.py:2096 msgid "Show recent stock changes" msgstr "" -#: common/models.py:2076 +#: common/models.py:2097 msgid "Show recently changed stock items on the homepage" msgstr "" -#: common/models.py:2081 +#: common/models.py:2102 msgid "Show low stock" msgstr "" -#: common/models.py:2082 +#: common/models.py:2103 msgid "Show low stock items on the homepage" msgstr "" -#: common/models.py:2087 +#: common/models.py:2108 msgid "Show depleted stock" msgstr "" -#: common/models.py:2088 +#: common/models.py:2109 msgid "Show depleted stock items on the homepage" msgstr "" -#: common/models.py:2093 +#: common/models.py:2114 msgid "Show needed stock" msgstr "" -#: common/models.py:2094 +#: common/models.py:2115 msgid "Show stock items needed for builds on the homepage" msgstr "" -#: common/models.py:2099 +#: common/models.py:2120 msgid "Show expired stock" msgstr "" -#: common/models.py:2100 +#: common/models.py:2121 msgid "Show expired stock items on the homepage" msgstr "" -#: common/models.py:2105 +#: common/models.py:2126 msgid "Show stale stock" msgstr "" -#: common/models.py:2106 +#: common/models.py:2127 msgid "Show stale stock items on the homepage" msgstr "" -#: common/models.py:2111 +#: common/models.py:2132 msgid "Show pending builds" msgstr "" -#: common/models.py:2112 +#: common/models.py:2133 msgid "Show pending builds on the homepage" msgstr "" -#: common/models.py:2117 +#: common/models.py:2138 msgid "Show overdue builds" msgstr "显示逾期生产" -#: common/models.py:2118 +#: common/models.py:2139 msgid "Show overdue builds on the homepage" msgstr "在主页上显示逾期的生产" -#: common/models.py:2123 +#: common/models.py:2144 msgid "Show outstanding POs" msgstr "" -#: common/models.py:2124 +#: common/models.py:2145 msgid "Show outstanding POs on the homepage" msgstr "" -#: common/models.py:2129 +#: common/models.py:2150 msgid "Show overdue POs" msgstr "" -#: common/models.py:2130 +#: common/models.py:2151 msgid "Show overdue POs on the homepage" msgstr "" -#: common/models.py:2135 +#: common/models.py:2156 msgid "Show outstanding SOs" msgstr "" -#: common/models.py:2136 +#: common/models.py:2157 msgid "Show outstanding SOs on the homepage" msgstr "" -#: common/models.py:2141 +#: common/models.py:2162 msgid "Show overdue SOs" msgstr "" -#: common/models.py:2142 +#: common/models.py:2163 msgid "Show overdue SOs on the homepage" msgstr "" -#: common/models.py:2147 +#: common/models.py:2168 msgid "Show pending SO shipments" msgstr "" -#: common/models.py:2148 +#: common/models.py:2169 #, fuzzy #| msgid "Show latest parts on the homepage" msgid "Show pending SO shipments on the homepage" msgstr "在主页上显示最近商品" -#: common/models.py:2153 +#: common/models.py:2174 msgid "Show News" msgstr "" -#: common/models.py:2154 +#: common/models.py:2175 msgid "Show news on the homepage" msgstr "" -#: common/models.py:2159 +#: common/models.py:2180 msgid "Inline label display" msgstr "内嵌标签显示" -#: common/models.py:2161 +#: common/models.py:2182 msgid "Display PDF labels in the browser, instead of downloading as a file" msgstr "在浏览器中显示 PDF 标签,而不是以文件形式下载" -#: common/models.py:2167 +#: common/models.py:2188 msgid "Default label printer" msgstr "" -#: common/models.py:2169 +#: common/models.py:2190 msgid "Configure which label printer should be selected by default" msgstr "" -#: common/models.py:2175 +#: common/models.py:2196 msgid "Inline report display" msgstr "" -#: common/models.py:2177 +#: common/models.py:2198 msgid "Display PDF reports in the browser, instead of downloading as a file" msgstr "在浏览器中显示 PDF 报告,而不是以文件形式下载" -#: common/models.py:2183 +#: common/models.py:2204 msgid "Search Parts" msgstr "" -#: common/models.py:2184 +#: common/models.py:2205 msgid "Display parts in search preview window" msgstr "" -#: common/models.py:2189 +#: common/models.py:2210 msgid "Search Supplier Parts" msgstr "" -#: common/models.py:2190 +#: common/models.py:2211 msgid "Display supplier parts in search preview window" msgstr "" -#: common/models.py:2195 +#: common/models.py:2216 msgid "Search Manufacturer Parts" msgstr "" -#: common/models.py:2196 +#: common/models.py:2217 msgid "Display manufacturer parts in search preview window" msgstr "" -#: common/models.py:2201 +#: common/models.py:2222 msgid "Hide Inactive Parts" msgstr "" -#: common/models.py:2202 +#: common/models.py:2223 msgid "Excluded inactive parts from search preview window" msgstr "" -#: common/models.py:2207 +#: common/models.py:2228 msgid "Search Categories" msgstr "" -#: common/models.py:2208 +#: common/models.py:2229 msgid "Display part categories in search preview window" msgstr "" -#: common/models.py:2213 +#: common/models.py:2234 msgid "Search Stock" msgstr "" -#: common/models.py:2214 +#: common/models.py:2235 msgid "Display stock items in search preview window" msgstr "" -#: common/models.py:2219 +#: common/models.py:2240 msgid "Hide Unavailable Stock Items" msgstr "" -#: common/models.py:2221 +#: common/models.py:2242 msgid "Exclude stock items which are not available from the search preview window" msgstr "" -#: common/models.py:2227 +#: common/models.py:2248 msgid "Search Locations" msgstr "" -#: common/models.py:2228 +#: common/models.py:2249 msgid "Display stock locations in search preview window" msgstr "" -#: common/models.py:2233 +#: common/models.py:2254 msgid "Search Companies" msgstr "" -#: common/models.py:2234 +#: common/models.py:2255 msgid "Display companies in search preview window" msgstr "" -#: common/models.py:2239 +#: common/models.py:2260 msgid "Search Build Orders" msgstr "" -#: common/models.py:2240 +#: common/models.py:2261 msgid "Display build orders in search preview window" msgstr "" -#: common/models.py:2245 +#: common/models.py:2266 msgid "Search Purchase Orders" msgstr "" -#: common/models.py:2246 +#: common/models.py:2267 msgid "Display purchase orders in search preview window" msgstr "" -#: common/models.py:2251 +#: common/models.py:2272 msgid "Exclude Inactive Purchase Orders" msgstr "" -#: common/models.py:2253 +#: common/models.py:2274 msgid "Exclude inactive purchase orders from search preview window" msgstr "" -#: common/models.py:2259 +#: common/models.py:2280 msgid "Search Sales Orders" msgstr "" -#: common/models.py:2260 +#: common/models.py:2281 msgid "Display sales orders in search preview window" msgstr "" -#: common/models.py:2265 +#: common/models.py:2286 msgid "Exclude Inactive Sales Orders" msgstr "" -#: common/models.py:2267 +#: common/models.py:2288 msgid "Exclude inactive sales orders from search preview window" msgstr "" -#: common/models.py:2273 +#: common/models.py:2294 #, fuzzy #| msgid "Purchase Orders" msgid "Search Return Orders" msgstr "采购订单" -#: common/models.py:2274 +#: common/models.py:2295 msgid "Display return orders in search preview window" msgstr "" -#: common/models.py:2279 +#: common/models.py:2300 msgid "Exclude Inactive Return Orders" msgstr "" -#: common/models.py:2281 +#: common/models.py:2302 msgid "Exclude inactive return orders from search preview window" msgstr "" -#: common/models.py:2287 +#: common/models.py:2308 msgid "Search Preview Results" msgstr "搜索预览结果" -#: common/models.py:2289 +#: common/models.py:2310 msgid "Number of results to show in each section of the search preview window" msgstr "" -#: common/models.py:2295 +#: common/models.py:2316 #, fuzzy #| msgid "Search" msgid "Regex Search" msgstr "搜索" -#: common/models.py:2296 +#: common/models.py:2317 msgid "Enable regular expressions in search queries" msgstr "" -#: common/models.py:2301 +#: common/models.py:2322 msgid "Whole Word Search" msgstr "" -#: common/models.py:2302 +#: common/models.py:2323 msgid "Search queries return results for whole word matches" msgstr "" -#: common/models.py:2307 +#: common/models.py:2328 msgid "Show Quantity in Forms" msgstr "在表格中显示数量" -#: common/models.py:2308 +#: common/models.py:2329 msgid "Display available part quantity in some forms" msgstr "在某些表格中显示可用的商品数量" -#: common/models.py:2313 +#: common/models.py:2334 msgid "Escape Key Closes Forms" msgstr "" -#: common/models.py:2314 +#: common/models.py:2335 msgid "Use the escape key to close modal forms" msgstr "" -#: common/models.py:2319 +#: common/models.py:2340 msgid "Fixed Navbar" msgstr "" -#: common/models.py:2320 +#: common/models.py:2341 msgid "The navbar position is fixed to the top of the screen" msgstr "" -#: common/models.py:2325 +#: common/models.py:2346 msgid "Date Format" msgstr "" -#: common/models.py:2326 +#: common/models.py:2347 msgid "Preferred format for displaying dates" msgstr "" -#: common/models.py:2339 part/templates/part/detail.html:41 +#: common/models.py:2360 part/templates/part/detail.html:41 msgid "Part Scheduling" msgstr "" -#: common/models.py:2340 +#: common/models.py:2361 msgid "Display part scheduling information" msgstr "" -#: common/models.py:2345 part/templates/part/detail.html:62 +#: common/models.py:2366 part/templates/part/detail.html:62 msgid "Part Stocktake" msgstr "" -#: common/models.py:2347 +#: common/models.py:2368 msgid "Display part stocktake information (if stocktake functionality is enabled)" msgstr "" -#: common/models.py:2353 +#: common/models.py:2374 msgid "Table String Length" msgstr "" -#: common/models.py:2355 +#: common/models.py:2376 msgid "Maximum length limit for strings displayed in table views" msgstr "" -#: common/models.py:2361 +#: common/models.py:2382 #, fuzzy #| msgid "Select Label Template" msgid "Default part label template" msgstr "选择标签模板" -#: common/models.py:2362 +#: common/models.py:2383 msgid "The part label template to be automatically selected" msgstr "" -#: common/models.py:2367 +#: common/models.py:2388 #, fuzzy #| msgid "stock items selected" msgid "Default stock item template" msgstr "已选择库存项" -#: common/models.py:2369 +#: common/models.py:2390 msgid "The stock item label template to be automatically selected" msgstr "" -#: common/models.py:2375 +#: common/models.py:2396 #, fuzzy #| msgid "No stock location set" msgid "Default stock location label template" msgstr "未设置仓储地点" -#: common/models.py:2377 +#: common/models.py:2398 msgid "The stock location label template to be automatically selected" msgstr "" -#: common/models.py:2383 +#: common/models.py:2404 msgid "Receive error reports" msgstr "" -#: common/models.py:2384 +#: common/models.py:2405 msgid "Receive notifications for system errors" msgstr "" -#: common/models.py:2389 +#: common/models.py:2410 msgid "Last used printing machines" msgstr "" -#: common/models.py:2390 +#: common/models.py:2411 msgid "Save the last used printing machines for a user" msgstr "" -#: common/models.py:2433 +#: common/models.py:2454 msgid "Price break quantity" msgstr "" -#: common/models.py:2440 company/serializers.py:484 order/admin.py:42 +#: common/models.py:2461 company/serializers.py:486 order/admin.py:42 #: order/models.py:1321 order/models.py:2226 #: templates/js/translated/company.js:1813 templates/js/translated/part.js:1885 #: templates/js/translated/pricing.js:621 @@ -3633,23 +3658,23 @@ msgstr "" msgid "Price" msgstr "价格" -#: common/models.py:2441 +#: common/models.py:2462 msgid "Unit price at specified quantity" msgstr "" -#: common/models.py:2612 common/models.py:2797 +#: common/models.py:2633 common/models.py:2818 msgid "Endpoint" msgstr "" -#: common/models.py:2613 +#: common/models.py:2634 msgid "Endpoint at which this webhook is received" msgstr "" -#: common/models.py:2623 +#: common/models.py:2644 msgid "Name for this webhook" msgstr "" -#: common/models.py:2627 machine/models.py:39 part/admin.py:88 +#: common/models.py:2648 machine/models.py:39 part/admin.py:88 #: part/models.py:1044 plugin/models.py:56 #: templates/js/translated/table_filters.js:135 #: templates/js/translated/table_filters.js:219 @@ -3659,101 +3684,101 @@ msgstr "" msgid "Active" msgstr "" -#: common/models.py:2627 +#: common/models.py:2648 msgid "Is this webhook active" msgstr "" -#: common/models.py:2643 users/models.py:148 +#: common/models.py:2664 users/models.py:148 msgid "Token" msgstr "令牌" -#: common/models.py:2644 +#: common/models.py:2665 msgid "Token for access" msgstr "" -#: common/models.py:2652 +#: common/models.py:2673 msgid "Secret" msgstr "" -#: common/models.py:2653 +#: common/models.py:2674 msgid "Shared secret for HMAC" msgstr "" -#: common/models.py:2761 +#: common/models.py:2782 msgid "Message ID" msgstr "" -#: common/models.py:2762 +#: common/models.py:2783 msgid "Unique identifier for this message" msgstr "" -#: common/models.py:2770 +#: common/models.py:2791 msgid "Host" msgstr "" -#: common/models.py:2771 +#: common/models.py:2792 msgid "Host from which this message was received" msgstr "" -#: common/models.py:2779 +#: common/models.py:2800 msgid "Header" msgstr "" -#: common/models.py:2780 +#: common/models.py:2801 msgid "Header of this message" msgstr "" -#: common/models.py:2787 +#: common/models.py:2808 msgid "Body" msgstr "" -#: common/models.py:2788 +#: common/models.py:2809 msgid "Body of this message" msgstr "" -#: common/models.py:2798 +#: common/models.py:2819 msgid "Endpoint on which this message was received" msgstr "" -#: common/models.py:2803 +#: common/models.py:2824 msgid "Worked on" msgstr "" -#: common/models.py:2804 +#: common/models.py:2825 msgid "Was the work on this message finished?" msgstr "" -#: common/models.py:2930 +#: common/models.py:2951 msgid "Id" msgstr "" -#: common/models.py:2932 templates/js/translated/company.js:955 +#: common/models.py:2953 templates/js/translated/company.js:955 #: templates/js/translated/news.js:44 msgid "Title" msgstr "" -#: common/models.py:2936 templates/js/translated/news.js:60 +#: common/models.py:2957 templates/js/translated/news.js:60 msgid "Published" msgstr "" -#: common/models.py:2938 templates/InvenTree/settings/plugin_settings.html:32 +#: common/models.py:2959 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:2940 templates/js/translated/news.js:52 +#: common/models.py:2961 templates/js/translated/news.js:52 msgid "Summary" msgstr "" -#: common/models.py:2943 +#: common/models.py:2964 msgid "Read" msgstr "" -#: common/models.py:2943 +#: common/models.py:2964 msgid "Was this news item read?" msgstr "" -#: common/models.py:2960 company/models.py:155 part/models.py:928 +#: common/models.py:2981 company/models.py:155 part/models.py:928 #: report/templates/report/inventree_bill_of_materials_report.html:126 #: report/templates/report/inventree_bill_of_materials_report.html:148 #: report/templates/report/inventree_return_order_report_base.html:35 @@ -3763,41 +3788,41 @@ msgstr "" msgid "Image" msgstr "图片" -#: common/models.py:2960 +#: common/models.py:2981 #, fuzzy #| msgid "Image" msgid "Image file" msgstr "图片" -#: common/models.py:3002 +#: common/models.py:3023 #, fuzzy #| msgid "Must be a valid number" msgid "Unit name must be a valid identifier" msgstr "必须是有效数字" -#: common/models.py:3021 +#: common/models.py:3042 #, fuzzy #| msgid "Part name" msgid "Unit name" msgstr "商品名称" -#: common/models.py:3028 templates/InvenTree/settings/settings_staff_js.html:75 +#: common/models.py:3049 templates/InvenTree/settings/settings_staff_js.html:75 msgid "Symbol" msgstr "" -#: common/models.py:3029 +#: common/models.py:3050 #, fuzzy #| msgid "Optional Items" msgid "Optional unit symbol" msgstr "可选项目" -#: common/models.py:3036 templates/InvenTree/settings/settings_staff_js.html:71 +#: common/models.py:3057 templates/InvenTree/settings/settings_staff_js.html:71 #, fuzzy #| msgid "Destination" msgid "Definition" msgstr "目的地" -#: common/models.py:3037 +#: common/models.py:3058 msgid "Unit definition" msgstr "" @@ -4135,7 +4160,7 @@ msgid "Link to address information (external)" msgstr "描述 (可选)" #: company/models.py:484 company/models.py:785 stock/models.py:754 -#: stock/serializers.py:251 stock/templates/stock/item_base.html:142 +#: stock/serializers.py:252 stock/templates/stock/item_base.html:142 #: templates/js/translated/bom.js:622 msgid "Base Part" msgstr "" @@ -4146,7 +4171,7 @@ msgstr "选择商品" #: company/models.py:495 company/templates/company/company_base.html:76 #: company/templates/company/manufacturer_part.html:90 -#: company/templates/company/supplier_part.html:145 part/serializers.py:497 +#: company/templates/company/supplier_part.html:145 part/serializers.py:515 #: stock/templates/stock/item_base.html:207 #: templates/js/translated/company.js:506 #: templates/js/translated/company.js:1108 @@ -4161,7 +4186,7 @@ msgid "Select manufacturer" msgstr "选择制造商" #: company/models.py:502 company/templates/company/manufacturer_part.html:101 -#: company/templates/company/supplier_part.html:153 part/serializers.py:507 +#: company/templates/company/supplier_part.html:153 part/serializers.py:525 #: templates/js/translated/company.js:351 #: templates/js/translated/company.js:1107 #: templates/js/translated/company.js:1302 @@ -4207,7 +4232,7 @@ msgid "Parameter value" msgstr "参数值" #: company/models.py:623 company/templates/company/supplier_part.html:168 -#: part/admin.py:57 part/models.py:1008 part/models.py:3613 +#: part/admin.py:57 part/models.py:1008 part/models.py:3622 #: part/templates/part/part_base.html:284 #: templates/js/translated/company.js:1415 templates/js/translated/part.js:1511 #: templates/js/translated/part.js:1615 templates/js/translated/part.js:2370 @@ -4235,7 +4260,7 @@ msgstr "" #: company/models.py:795 company/templates/company/company_base.html:81 #: company/templates/company/supplier_part.html:129 order/models.py:453 #: order/templates/order/order_base.html:136 part/bom.py:272 part/bom.py:310 -#: part/serializers.py:481 plugin/builtin/suppliers/digikey.py:25 +#: part/serializers.py:499 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 @@ -4252,7 +4277,7 @@ msgstr "供应商" msgid "Select supplier" msgstr "选择供应商" -#: company/models.py:802 part/serializers.py:492 +#: company/models.py:802 part/serializers.py:510 msgid "Supplier stock keeping unit" msgstr "" @@ -4269,13 +4294,13 @@ msgid "Supplier part description" msgstr "供应商商品描述" #: company/models.py:834 company/templates/company/supplier_part.html:187 -#: part/admin.py:418 part/models.py:4035 part/templates/part/upload_bom.html:59 +#: part/admin.py:418 part/models.py:4044 part/templates/part/upload_bom.html:59 #: report/templates/report/inventree_bill_of_materials_report.html:140 #: report/templates/report/inventree_po_report_base.html:32 #: report/templates/report/inventree_return_order_report_base.html:27 #: report/templates/report/inventree_slr_report.html:105 #: report/templates/report/inventree_so_report_base.html:32 -#: stock/serializers.py:557 +#: stock/serializers.py:565 msgid "Note" msgstr "备注" @@ -4288,7 +4313,7 @@ msgid "Minimum charge (e.g. stocking fee)" msgstr "最低收费(例如库存费)" #: company/models.py:851 company/templates/company/supplier_part.html:160 -#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1317 +#: stock/admin.py:224 stock/models.py:785 stock/serializers.py:1336 #: stock/templates/stock/item_base.html:240 #: templates/js/translated/company.js:1636 #: templates/js/translated/stock.js:2387 @@ -4333,7 +4358,7 @@ msgstr "" msgid "Date of last update of availability data" msgstr "" -#: company/serializers.py:153 +#: company/serializers.py:155 msgid "Default currency used for this supplier" msgstr "该公司使用的默认货币" @@ -4396,7 +4421,7 @@ msgstr "" #: company/templates/company/company_base.html:86 order/models.py:898 #: order/models.py:1993 order/templates/order/return_order_base.html:131 #: order/templates/order/sales_order_base.html:144 stock/models.py:807 -#: stock/models.py:808 stock/serializers.py:1067 +#: stock/models.py:808 stock/serializers.py:1086 #: stock/templates/stock/item_base.html:405 #: templates/email/overdue_sales_order.html:16 #: templates/js/translated/company.js:502 @@ -4621,8 +4646,9 @@ msgstr "" #: company/templates/company/manufacturer_part.html:119 #: company/templates/company/supplier_part.html:15 company/views.py:31 -#: part/admin.py:122 part/templates/part/part_sidebar.html:33 -#: templates/InvenTree/search.html:190 templates/navbar.html:48 +#: part/admin.py:122 part/serializers.py:819 +#: part/templates/part/part_sidebar.html:33 templates/InvenTree/search.html:190 +#: templates/navbar.html:48 msgid "Suppliers" msgstr "供应商" @@ -4724,7 +4750,7 @@ msgid "No supplier information available" msgstr "" #: company/templates/company/supplier_part.html:139 part/bom.py:279 -#: part/bom.py:311 part/serializers.py:491 +#: part/bom.py:311 part/serializers.py:509 #: templates/js/translated/company.js:349 templates/js/translated/part.js:1786 #: templates/js/translated/pricing.js:510 #: templates/js/translated/purchase_order.js:1851 @@ -4773,10 +4799,12 @@ msgstr "" msgid "Update Part Availability" msgstr "" -#: company/templates/company/supplier_part_sidebar.html:5 part/stocktake.py:223 +#: company/templates/company/supplier_part_sidebar.html:5 +#: part/serializers.py:818 part/stocktake.py:223 #: part/templates/part/category.html:183 #: part/templates/part/category_sidebar.html:17 stock/admin.py:69 -#: stock/serializers.py:760 stock/templates/stock/location.html:170 +#: stock/serializers.py:773 stock/serializers.py:937 +#: stock/templates/stock/location.html:170 #: stock/templates/stock/location.html:184 #: stock/templates/stock/location.html:196 #: stock/templates/stock/location_sidebar.html:7 @@ -4837,8 +4865,8 @@ msgstr "标签" msgid "Label template file" msgstr "标签模板文件" -#: label/models.py:143 part/models.py:3484 report/models.py:322 -#: templates/js/translated/part.js:2891 +#: label/models.py:143 part/models.py:3493 report/models.py:323 +#: templates/js/translated/part.js:2900 #: templates/js/translated/table_filters.js:481 msgid "Enabled" msgstr "已启用" @@ -4863,7 +4891,7 @@ msgstr "高度 [mm]" msgid "Label height, specified in mm" msgstr "标注高度,以毫米为单位。" -#: label/models.py:163 report/models.py:315 +#: label/models.py:163 report/models.py:316 msgid "Filename Pattern" msgstr "文件名样式" @@ -4879,8 +4907,8 @@ msgid "Query filters (comma-separated list of key=value pairs)" msgstr "查询筛选器 (逗号分隔的键值对列表)" #: label/models.py:314 label/models.py:353 label/models.py:378 -#: label/models.py:413 report/models.py:343 report/models.py:494 -#: report/models.py:530 report/models.py:566 report/models.py:688 +#: label/models.py:413 report/models.py:344 report/models.py:495 +#: report/models.py:531 report/models.py:567 report/models.py:749 msgid "Filters" msgstr "筛选器" @@ -5062,13 +5090,13 @@ msgstr "已退回" msgid "Total price for this order" msgstr "负责此订单的用户或群组" -#: order/models.py:95 order/serializers.py:54 +#: order/models.py:95 order/serializers.py:65 #, fuzzy #| msgid "Currency" msgid "Order Currency" msgstr "货币" -#: order/models.py:98 order/serializers.py:55 +#: order/models.py:98 order/serializers.py:66 msgid "Currency for this order (leave blank to use company default)" msgstr "" @@ -5269,7 +5297,7 @@ msgstr "" msgid "Number of items received" msgstr "" -#: order/models.py:1406 stock/models.py:926 stock/serializers.py:378 +#: order/models.py:1406 stock/models.py:926 stock/serializers.py:386 #: stock/templates/stock/item_base.html:183 #: templates/js/translated/stock.js:2274 msgid "Purchase Price" @@ -5324,8 +5352,8 @@ msgstr "" msgid "User who checked this shipment" msgstr "" -#: order/models.py:1668 order/models.py:1879 order/serializers.py:1321 -#: order/serializers.py:1431 templates/js/translated/model_renderers.js:448 +#: order/models.py:1668 order/models.py:1879 order/serializers.py:1343 +#: order/serializers.py:1453 templates/js/translated/model_renderers.js:448 msgid "Shipment" msgstr "" @@ -5373,7 +5401,7 @@ msgstr "" msgid "Allocation quantity cannot exceed stock quantity" msgstr "" -#: order/models.py:1859 order/serializers.py:1198 +#: order/models.py:1859 order/serializers.py:1220 msgid "Quantity must be 1 for serialized stock item" msgstr "" @@ -5453,169 +5481,169 @@ msgstr "" msgid "Cost associated with return or repair for this line item" msgstr "" -#: order/serializers.py:266 +#: order/serializers.py:277 msgid "Order cannot be cancelled" msgstr "无法取消订单" -#: order/serializers.py:281 order/serializers.py:1214 +#: order/serializers.py:292 order/serializers.py:1236 msgid "Allow order to be closed with incomplete line items" msgstr "" -#: order/serializers.py:291 order/serializers.py:1224 +#: order/serializers.py:302 order/serializers.py:1246 msgid "Order has incomplete line items" msgstr "" -#: order/serializers.py:408 +#: order/serializers.py:430 msgid "Order is not open" msgstr "" -#: order/serializers.py:429 +#: order/serializers.py:451 #, fuzzy #| msgid "Part Pricing" msgid "Auto Pricing" msgstr "商品价格" -#: order/serializers.py:431 +#: order/serializers.py:453 msgid "Automatically calculate purchase price based on supplier part data" msgstr "" -#: order/serializers.py:441 +#: order/serializers.py:463 msgid "Purchase price currency" msgstr "" -#: order/serializers.py:447 +#: order/serializers.py:469 #, fuzzy #| msgid "Select Stock Items" msgid "Merge Items" msgstr "选择库存项" -#: order/serializers.py:449 +#: order/serializers.py:471 msgid "Merge items with the same part, destination and target date into one line item" msgstr "" -#: order/serializers.py:467 +#: order/serializers.py:489 msgid "Supplier part must be specified" msgstr "" -#: order/serializers.py:470 +#: order/serializers.py:492 msgid "Purchase order must be specified" msgstr "" -#: order/serializers.py:478 +#: order/serializers.py:500 msgid "Supplier must match purchase order" msgstr "" -#: order/serializers.py:479 +#: order/serializers.py:501 msgid "Purchase order must match supplier" msgstr "" -#: order/serializers.py:518 order/serializers.py:1292 +#: order/serializers.py:540 order/serializers.py:1314 msgid "Line Item" msgstr "" -#: order/serializers.py:524 +#: order/serializers.py:546 msgid "Line item does not match purchase order" msgstr "" -#: order/serializers.py:534 order/serializers.py:642 order/serializers.py:1647 +#: order/serializers.py:556 order/serializers.py:664 order/serializers.py:1669 msgid "Select destination location for received items" msgstr "" -#: order/serializers.py:550 templates/js/translated/purchase_order.js:1130 +#: order/serializers.py:572 templates/js/translated/purchase_order.js:1130 msgid "Enter batch code for incoming stock items" msgstr "" -#: order/serializers.py:558 templates/js/translated/purchase_order.js:1154 +#: order/serializers.py:580 templates/js/translated/purchase_order.js:1154 msgid "Enter serial numbers for incoming stock items" msgstr "" -#: order/serializers.py:569 templates/js/translated/barcode.js:52 +#: order/serializers.py:591 templates/js/translated/barcode.js:52 msgid "Barcode" msgstr "条形码" -#: order/serializers.py:570 +#: order/serializers.py:592 #, fuzzy #| msgid "Scan Barcode" msgid "Scanned barcode" msgstr "扫描条形码" -#: order/serializers.py:586 +#: order/serializers.py:608 msgid "Barcode is already in use" msgstr "" -#: order/serializers.py:610 +#: order/serializers.py:632 msgid "An integer quantity must be provided for trackable parts" msgstr "" -#: order/serializers.py:658 order/serializers.py:1663 +#: order/serializers.py:680 order/serializers.py:1685 msgid "Line items must be provided" msgstr "" -#: order/serializers.py:674 +#: order/serializers.py:696 msgid "Destination location must be specified" msgstr "" -#: order/serializers.py:685 +#: order/serializers.py:707 msgid "Supplied barcode values must be unique" msgstr "" -#: order/serializers.py:1042 +#: order/serializers.py:1064 msgid "Sale price currency" msgstr "" -#: order/serializers.py:1102 +#: order/serializers.py:1124 msgid "No shipment details provided" msgstr "" -#: order/serializers.py:1162 order/serializers.py:1301 +#: order/serializers.py:1184 order/serializers.py:1323 msgid "Line item is not associated with this order" msgstr "" -#: order/serializers.py:1181 +#: order/serializers.py:1203 msgid "Quantity must be positive" msgstr "" -#: order/serializers.py:1311 +#: order/serializers.py:1333 msgid "Enter serial numbers to allocate" msgstr "" -#: order/serializers.py:1333 order/serializers.py:1439 +#: order/serializers.py:1355 order/serializers.py:1461 msgid "Shipment has already been shipped" msgstr "" -#: order/serializers.py:1336 order/serializers.py:1442 +#: order/serializers.py:1358 order/serializers.py:1464 msgid "Shipment is not associated with this order" msgstr "" -#: order/serializers.py:1383 +#: order/serializers.py:1405 msgid "No match found for the following serial numbers" msgstr "" -#: order/serializers.py:1390 +#: order/serializers.py:1412 msgid "The following serial numbers are already allocated" msgstr "" -#: order/serializers.py:1617 +#: order/serializers.py:1639 msgid "Return order line item" msgstr "" -#: order/serializers.py:1623 +#: order/serializers.py:1645 #, fuzzy #| msgid "Build output does not match Build Order" msgid "Line item does not match return order" msgstr "生产产出与订单不匹配" -#: order/serializers.py:1626 +#: order/serializers.py:1648 #, fuzzy #| msgid "This build output has already been completed" msgid "Line item has already been received" msgstr "此生产产出已经完成" -#: order/serializers.py:1655 +#: order/serializers.py:1677 msgid "Items can only be received against orders which are in progress" msgstr "" -#: order/serializers.py:1733 +#: order/serializers.py:1755 #, fuzzy #| msgid "Uses default currency" msgid "Line price currency" @@ -6013,7 +6041,7 @@ msgid "Pending Shipments" msgstr "" #: order/templates/order/sales_order_detail.html:71 -#: templates/js/translated/bom.js:1271 templates/js/translated/filters.js:296 +#: templates/js/translated/bom.js:1277 templates/js/translated/filters.js:296 msgid "Actions" msgstr "" @@ -6043,12 +6071,12 @@ msgstr "" msgid "Updated {part} unit-price to {price} and quantity to {qty}" msgstr "" -#: part/admin.py:39 part/admin.py:404 part/models.py:3886 part/stocktake.py:218 +#: part/admin.py:39 part/admin.py:404 part/models.py:3895 part/stocktake.py:218 #: stock/admin.py:153 msgid "Part ID" msgstr "商品ID" -#: part/admin.py:41 part/admin.py:411 part/models.py:3887 part/stocktake.py:219 +#: part/admin.py:41 part/admin.py:411 part/models.py:3896 part/stocktake.py:219 #: stock/admin.py:157 msgid "Part Name" msgstr "" @@ -6065,7 +6093,7 @@ msgid "IPN" msgstr "" #: part/admin.py:50 part/models.py:912 part/templates/part/part_base.html:277 -#: report/models.py:193 templates/js/translated/part.js:1231 +#: report/models.py:194 templates/js/translated/part.js:1231 #: templates/js/translated/part.js:2347 msgid "Revision" msgstr "" @@ -6143,10 +6171,10 @@ msgstr "" msgid "Category Path" msgstr "类别路径" -#: part/admin.py:323 part/models.py:390 part/serializers.py:259 -#: part/serializers.py:373 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/admin.py:323 part/models.py:390 part/serializers.py:117 +#: part/serializers.py:272 part/serializers.py:391 +#: 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 @@ -6167,17 +6195,17 @@ msgstr "" msgid "Parent IPN" msgstr "" -#: part/admin.py:408 part/models.py:3888 +#: part/admin.py:408 part/models.py:3897 msgid "Part IPN" msgstr "" -#: part/admin.py:421 part/serializers.py:1220 +#: part/admin.py:421 part/serializers.py:1256 #: templates/js/translated/pricing.js:358 #: templates/js/translated/pricing.js:1024 msgid "Minimum Price" msgstr "" -#: part/admin.py:426 part/serializers.py:1235 +#: part/admin.py:426 part/serializers.py:1271 #: templates/js/translated/pricing.js:353 #: templates/js/translated/pricing.js:1032 msgid "Maximum Price" @@ -6263,8 +6291,8 @@ msgstr "" msgid "This option must be selected" msgstr "" -#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3831 -#: part/serializers.py:388 part/serializers.py:1076 +#: part/api.py:1541 part/models.py:895 part/models.py:3385 part/models.py:3840 +#: part/serializers.py:406 part/serializers.py:1112 #: part/templates/part/part_base.html:260 stock/api.py:733 #: templates/InvenTree/settings/settings_staff_js.html:300 #: templates/js/translated/notification.js:60 @@ -6272,12 +6300,17 @@ msgstr "" msgid "Category" msgstr "类别" +#: part/api.py:1828 +msgid "Uses" +msgstr "" + #: part/bom.py:170 part/models.py:100 part/models.py:938 #: part/templates/part/category.html:116 part/templates/part/part_base.html:367 msgid "Default Location" msgstr "默认仓储地点" -#: part/bom.py:171 templates/email/low_stock_notification.html:16 +#: part/bom.py:171 part/serializers.py:820 +#: templates/email/low_stock_notification.html:16 msgid "Total Stock" msgstr "" @@ -6285,7 +6318,7 @@ msgstr "" msgid "Input quantity for price calculation" msgstr "" -#: part/models.py:81 part/models.py:3832 part/templates/part/category.html:16 +#: part/models.py:81 part/models.py:3841 part/templates/part/category.html:16 #: part/templates/part/part_app_base.html:10 msgid "Part Category" msgstr "商品类别" @@ -6300,7 +6333,8 @@ msgstr "商品类别" msgid "Default location for parts in this category" msgstr "此类别商品的默认仓储地点" -#: part/models.py:106 stock/models.py:165 templates/js/translated/stock.js:2736 +#: part/models.py:106 stock/models.py:165 templates/js/translated/part.js:2810 +#: templates/js/translated/stock.js:2736 #: templates/js/translated/table_filters.js:239 #: templates/js/translated/table_filters.js:283 msgid "Structural" @@ -6367,7 +6401,7 @@ msgstr "" msgid "Parts cannot be assigned to structural part categories!" msgstr "" -#: part/models.py:854 part/models.py:3887 +#: part/models.py:854 part/models.py:3896 msgid "Part name" msgstr "商品名称" @@ -6705,608 +6739,632 @@ msgstr "" msgid "User who requested this stocktake report" msgstr "" -#: part/models.py:3438 +#: part/models.py:3434 +msgid "Invalid template name - must include at least one alphanumeric character" +msgstr "" + +#: part/models.py:3445 msgid "Test templates can only be created for trackable parts" msgstr "" -#: part/models.py:3448 -msgid "Test with this name already exists for this part" -msgstr "" +#: part/models.py:3456 +#, fuzzy +#| msgid "Attachment with this filename already exists" +msgid "Test template with the same key already exists for part" +msgstr "使用此文件名的附件已存在" -#: part/models.py:3464 templates/js/translated/part.js:2870 +#: part/models.py:3473 templates/js/translated/part.js:2879 msgid "Test Name" msgstr "" -#: part/models.py:3465 +#: part/models.py:3474 msgid "Enter a name for the test" msgstr "" -#: part/models.py:3471 +#: part/models.py:3480 msgid "Test Key" msgstr "" -#: part/models.py:3472 +#: part/models.py:3481 msgid "Simplified key for the test" msgstr "" -#: part/models.py:3479 +#: part/models.py:3488 msgid "Test Description" msgstr "" -#: part/models.py:3480 +#: part/models.py:3489 msgid "Enter description for this test" msgstr "" -#: part/models.py:3484 +#: part/models.py:3493 msgid "Is this test enabled?" msgstr "" -#: part/models.py:3489 templates/js/translated/part.js:2899 +#: part/models.py:3498 templates/js/translated/part.js:2908 #: templates/js/translated/table_filters.js:477 msgid "Required" msgstr "" -#: part/models.py:3490 +#: part/models.py:3499 msgid "Is this test required to pass?" msgstr "" -#: part/models.py:3495 templates/js/translated/part.js:2907 +#: part/models.py:3504 templates/js/translated/part.js:2916 msgid "Requires Value" msgstr "" -#: part/models.py:3496 +#: part/models.py:3505 msgid "Does this test require a value when adding a test result?" msgstr "" -#: part/models.py:3501 templates/js/translated/part.js:2914 +#: part/models.py:3510 templates/js/translated/part.js:2923 msgid "Requires Attachment" msgstr "" -#: part/models.py:3503 +#: part/models.py:3512 msgid "Does this test require a file attachment when adding a test result?" msgstr "" -#: part/models.py:3550 +#: part/models.py:3559 msgid "Checkbox parameters cannot have units" msgstr "" -#: part/models.py:3555 +#: part/models.py:3564 msgid "Checkbox parameters cannot have choices" msgstr "" -#: part/models.py:3575 +#: part/models.py:3584 #, fuzzy #| msgid "Key string must be unique" msgid "Choices must be unique" msgstr "关键字必须是唯一的" -#: part/models.py:3592 +#: part/models.py:3601 msgid "Parameter template name must be unique" msgstr "" -#: part/models.py:3607 +#: part/models.py:3616 msgid "Parameter Name" msgstr "" -#: part/models.py:3614 +#: part/models.py:3623 msgid "Physical units for this parameter" msgstr "" -#: part/models.py:3622 +#: part/models.py:3631 msgid "Parameter description" msgstr "" -#: part/models.py:3628 templates/js/translated/part.js:1627 +#: part/models.py:3637 templates/js/translated/part.js:1627 #: templates/js/translated/table_filters.js:821 msgid "Checkbox" msgstr "" -#: part/models.py:3629 +#: part/models.py:3638 msgid "Is this parameter a checkbox?" msgstr "" -#: part/models.py:3634 templates/js/translated/part.js:1636 +#: part/models.py:3643 templates/js/translated/part.js:1636 msgid "Choices" msgstr "" -#: part/models.py:3635 +#: part/models.py:3644 msgid "Valid choices for this parameter (comma-separated)" msgstr "" -#: part/models.py:3712 +#: part/models.py:3721 #, fuzzy #| msgid "Invalid choice for parent build" msgid "Invalid choice for parameter value" msgstr "上级生产选项无效" -#: part/models.py:3755 +#: part/models.py:3764 msgid "Parent Part" msgstr "" -#: part/models.py:3763 part/models.py:3839 part/models.py:3840 +#: part/models.py:3772 part/models.py:3848 part/models.py:3849 #: templates/InvenTree/settings/settings_staff_js.html:295 msgid "Parameter Template" msgstr "参数模板" -#: part/models.py:3768 +#: part/models.py:3777 msgid "Data" msgstr "" -#: part/models.py:3769 +#: part/models.py:3778 msgid "Parameter Value" msgstr "" -#: part/models.py:3846 templates/InvenTree/settings/settings_staff_js.html:304 +#: part/models.py:3855 templates/InvenTree/settings/settings_staff_js.html:304 msgid "Default Value" msgstr "默认值" -#: part/models.py:3847 +#: part/models.py:3856 msgid "Default Parameter Value" msgstr "" -#: part/models.py:3885 +#: part/models.py:3894 msgid "Part ID or part name" msgstr "" -#: part/models.py:3886 +#: part/models.py:3895 msgid "Unique part ID value" msgstr "" -#: part/models.py:3888 +#: part/models.py:3897 msgid "Part IPN value" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "Level" msgstr "" -#: part/models.py:3889 +#: part/models.py:3898 msgid "BOM level" msgstr "" -#: part/models.py:3979 +#: part/models.py:3988 msgid "Select parent part" msgstr "" -#: part/models.py:3989 +#: part/models.py:3998 msgid "Sub part" msgstr "" -#: part/models.py:3990 +#: part/models.py:3999 msgid "Select part to be used in BOM" msgstr "" -#: part/models.py:4001 +#: part/models.py:4010 msgid "BOM quantity for this BOM item" msgstr "" -#: part/models.py:4007 +#: part/models.py:4016 msgid "This BOM item is optional" msgstr "" -#: part/models.py:4013 +#: part/models.py:4022 msgid "This BOM item is consumable (it is not tracked in build orders)" msgstr "" -#: part/models.py:4020 part/templates/part/upload_bom.html:55 +#: part/models.py:4029 part/templates/part/upload_bom.html:55 msgid "Overage" msgstr "" -#: part/models.py:4021 +#: part/models.py:4030 msgid "Estimated build wastage quantity (absolute or percentage)" msgstr "" -#: part/models.py:4028 +#: part/models.py:4037 msgid "BOM item reference" msgstr "" -#: part/models.py:4036 +#: part/models.py:4045 msgid "BOM item notes" msgstr "" -#: part/models.py:4042 +#: part/models.py:4051 msgid "Checksum" msgstr "" -#: part/models.py:4043 +#: part/models.py:4052 msgid "BOM line checksum" msgstr "" -#: part/models.py:4048 templates/js/translated/table_filters.js:174 +#: part/models.py:4057 templates/js/translated/table_filters.js:174 msgid "Validated" msgstr "" -#: part/models.py:4049 +#: part/models.py:4058 #, fuzzy #| msgid "Some stock items have been overallocated" msgid "This BOM item has been validated" msgstr "一些库存项已被过度分配" -#: part/models.py:4054 part/templates/part/upload_bom.html:57 +#: part/models.py:4063 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:4055 +#: part/models.py:4064 msgid "This BOM item is inherited by BOMs for variant parts" msgstr "" -#: part/models.py:4060 part/templates/part/upload_bom.html:56 +#: part/models.py:4069 part/templates/part/upload_bom.html:56 #: templates/js/translated/bom.js:1046 msgid "Allow Variants" msgstr "" -#: part/models.py:4061 +#: part/models.py:4070 msgid "Stock items for variant parts can be used for this BOM item" msgstr "" -#: part/models.py:4146 stock/models.py:649 +#: part/models.py:4155 stock/models.py:649 msgid "Quantity must be integer value for trackable parts" msgstr "" -#: part/models.py:4156 part/models.py:4158 +#: part/models.py:4165 part/models.py:4167 msgid "Sub part must be specified" msgstr "" -#: part/models.py:4298 +#: part/models.py:4307 msgid "BOM Item Substitute" msgstr "" -#: part/models.py:4319 +#: part/models.py:4328 msgid "Substitute part cannot be the same as the master part" msgstr "" -#: part/models.py:4332 +#: part/models.py:4341 msgid "Parent BOM item" msgstr "" -#: part/models.py:4340 +#: part/models.py:4349 msgid "Substitute part" msgstr "" -#: part/models.py:4356 +#: part/models.py:4365 msgid "Part 1" msgstr "" -#: part/models.py:4364 +#: part/models.py:4373 msgid "Part 2" msgstr "" -#: part/models.py:4365 +#: part/models.py:4374 msgid "Select Related Part" msgstr "" -#: part/models.py:4384 +#: part/models.py:4393 msgid "Part relationship cannot be created between a part and itself" msgstr "" -#: part/models.py:4389 +#: part/models.py:4398 msgid "Duplicate relationship already exists" msgstr "" -#: part/serializers.py:128 part/templates/part/category.html:122 -#: part/templates/part/category.html:207 +#: part/serializers.py:119 part/serializers.py:141 +#: 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:172 +#: part/serializers.py:185 msgid "Results" msgstr "" -#: part/serializers.py:173 +#: part/serializers.py:186 msgid "Number of results recorded against this template" msgstr "" -#: part/serializers.py:197 part/serializers.py:215 stock/serializers.py:384 +#: part/serializers.py:210 part/serializers.py:228 stock/serializers.py:392 msgid "Purchase currency of this stock item" msgstr "" -#: part/serializers.py:260 +#: part/serializers.py:273 msgid "Number of parts using this template" msgstr "" -#: part/serializers.py:379 +#: part/serializers.py:397 #, fuzzy #| msgid "Rejected" msgid "No parts selected" msgstr "已拒绝" -#: part/serializers.py:389 +#: part/serializers.py:407 #, fuzzy #| msgid "Set category" msgid "Select category" msgstr "设置类别" -#: part/serializers.py:419 +#: part/serializers.py:437 msgid "Original Part" msgstr "" -#: part/serializers.py:420 +#: part/serializers.py:438 msgid "Select original part to duplicate" msgstr "" -#: part/serializers.py:425 +#: part/serializers.py:443 msgid "Copy Image" msgstr "" -#: part/serializers.py:426 +#: part/serializers.py:444 msgid "Copy image from original part" msgstr "" -#: part/serializers.py:432 part/templates/part/detail.html:277 +#: part/serializers.py:450 part/templates/part/detail.html:277 msgid "Copy BOM" msgstr "" -#: part/serializers.py:433 +#: part/serializers.py:451 msgid "Copy bill of materials from original part" msgstr "" -#: part/serializers.py:439 +#: part/serializers.py:457 msgid "Copy Parameters" msgstr "" -#: part/serializers.py:440 +#: part/serializers.py:458 msgid "Copy parameter data from original part" msgstr "" -#: part/serializers.py:446 +#: part/serializers.py:464 #, fuzzy #| msgid "Company Notes" msgid "Copy Notes" msgstr "公司备注" -#: part/serializers.py:447 +#: part/serializers.py:465 msgid "Copy notes from original part" msgstr "" -#: part/serializers.py:460 +#: part/serializers.py:478 msgid "Initial Stock Quantity" msgstr "" -#: part/serializers.py:462 +#: part/serializers.py:480 msgid "Specify initial stock quantity for this Part. If quantity is zero, no stock is added." msgstr "" -#: part/serializers.py:469 +#: part/serializers.py:487 msgid "Initial Stock Location" msgstr "" -#: part/serializers.py:470 +#: part/serializers.py:488 msgid "Specify initial stock location for this Part" msgstr "" -#: part/serializers.py:482 +#: part/serializers.py:500 msgid "Select supplier (or leave blank to skip)" msgstr "" -#: part/serializers.py:498 +#: part/serializers.py:516 msgid "Select manufacturer (or leave blank to skip)" msgstr "" -#: part/serializers.py:508 +#: part/serializers.py:526 msgid "Manufacturer part number" msgstr "" -#: part/serializers.py:515 +#: part/serializers.py:533 msgid "Selected company is not a valid supplier" msgstr "" -#: part/serializers.py:524 +#: part/serializers.py:542 msgid "Selected company is not a valid manufacturer" msgstr "" -#: part/serializers.py:535 +#: part/serializers.py:553 msgid "Manufacturer part matching this MPN already exists" msgstr "" -#: part/serializers.py:542 +#: part/serializers.py:560 msgid "Supplier part matching this SKU already exists" msgstr "" -#: part/serializers.py:815 part/templates/part/copy_part.html:9 +#: part/serializers.py:821 +#, fuzzy +#| msgid "External Link" +msgid "External Stock" +msgstr "外部链接" + +#: part/serializers.py:823 +#, fuzzy +#| msgid "Unallocate Stock" +msgid "Unallocated Stock" +msgstr "未分配库存" + +#: part/serializers.py:826 +#, fuzzy +#| msgid "Part Stock" +msgid "Variant Stock" +msgstr "商品库存" + +#: part/serializers.py:851 part/templates/part/copy_part.html:9 #: templates/js/translated/part.js:471 msgid "Duplicate Part" msgstr "复制部件" -#: part/serializers.py:816 +#: part/serializers.py:852 msgid "Copy initial data from another Part" msgstr "" -#: part/serializers.py:822 templates/js/translated/part.js:102 +#: part/serializers.py:858 templates/js/translated/part.js:102 msgid "Initial Stock" msgstr "" -#: part/serializers.py:823 +#: part/serializers.py:859 msgid "Create Part with initial stock quantity" msgstr "" -#: part/serializers.py:829 +#: part/serializers.py:865 msgid "Supplier Information" msgstr "" -#: part/serializers.py:830 +#: part/serializers.py:866 msgid "Add initial supplier information for this part" msgstr "" -#: part/serializers.py:838 +#: part/serializers.py:874 msgid "Copy Category Parameters" msgstr "复制类别参数" -#: part/serializers.py:839 +#: part/serializers.py:875 msgid "Copy parameter templates from selected part category" msgstr "" -#: part/serializers.py:844 +#: part/serializers.py:880 #, fuzzy #| msgid "Existing barcode found" msgid "Existing Image" msgstr "发现现有条码" -#: part/serializers.py:845 +#: part/serializers.py:881 msgid "Filename of an existing part image" msgstr "" -#: part/serializers.py:862 +#: part/serializers.py:898 #, fuzzy #| msgid "Part image not found" msgid "Image file does not exist" msgstr "未找到商品图像" -#: part/serializers.py:1068 +#: part/serializers.py:1104 msgid "Limit stocktake report to a particular part, and any variant parts" msgstr "" -#: part/serializers.py:1078 +#: part/serializers.py:1114 msgid "Limit stocktake report to a particular part category, and any child categories" msgstr "" -#: part/serializers.py:1088 +#: part/serializers.py:1124 msgid "Limit stocktake report to a particular stock location, and any child locations" msgstr "" -#: part/serializers.py:1094 +#: part/serializers.py:1130 msgid "Exclude External Stock" msgstr "" -#: part/serializers.py:1095 +#: part/serializers.py:1131 #, fuzzy #| msgid "Exclude stock items from this selected location" msgid "Exclude stock items in external locations" msgstr "从该选定的仓储地点排除库存项" -#: part/serializers.py:1100 +#: part/serializers.py:1136 msgid "Generate Report" msgstr "" -#: part/serializers.py:1101 +#: part/serializers.py:1137 msgid "Generate report file containing calculated stocktake data" msgstr "" -#: part/serializers.py:1106 +#: part/serializers.py:1142 msgid "Update Parts" msgstr "" -#: part/serializers.py:1107 +#: part/serializers.py:1143 msgid "Update specified parts with calculated stocktake data" msgstr "" -#: part/serializers.py:1115 +#: part/serializers.py:1151 msgid "Stocktake functionality is not enabled" msgstr "" -#: part/serializers.py:1221 +#: part/serializers.py:1257 msgid "Override calculated value for minimum price" msgstr "" -#: part/serializers.py:1228 +#: part/serializers.py:1264 #, fuzzy #| msgid "Uses default currency" msgid "Minimum price currency" msgstr "使用默认货币" -#: part/serializers.py:1236 +#: part/serializers.py:1272 msgid "Override calculated value for maximum price" msgstr "" -#: part/serializers.py:1243 +#: part/serializers.py:1279 #, fuzzy #| msgid "Uses default currency" msgid "Maximum price currency" msgstr "使用默认货币" -#: part/serializers.py:1272 +#: part/serializers.py:1308 msgid "Update" msgstr "" -#: part/serializers.py:1273 +#: part/serializers.py:1309 msgid "Update pricing for this part" msgstr "" -#: part/serializers.py:1296 +#: part/serializers.py:1332 #, python-brace-format msgid "Could not convert from provided currencies to {default_currency}" msgstr "" -#: part/serializers.py:1303 +#: part/serializers.py:1339 msgid "Minimum price must not be greater than maximum price" msgstr "" -#: part/serializers.py:1306 +#: part/serializers.py:1342 msgid "Maximum price must not be less than minimum price" msgstr "" -#: part/serializers.py:1632 +#: part/serializers.py:1678 msgid "Select part to copy BOM from" msgstr "" -#: part/serializers.py:1640 +#: part/serializers.py:1686 msgid "Remove Existing Data" msgstr "" -#: part/serializers.py:1641 +#: part/serializers.py:1687 msgid "Remove existing BOM items before copying" msgstr "" -#: part/serializers.py:1646 +#: part/serializers.py:1692 msgid "Include Inherited" msgstr "" -#: part/serializers.py:1647 +#: part/serializers.py:1693 msgid "Include BOM items which are inherited from templated parts" msgstr "" -#: part/serializers.py:1652 +#: part/serializers.py:1698 msgid "Skip Invalid Rows" msgstr "" -#: part/serializers.py:1653 +#: part/serializers.py:1699 msgid "Enable this option to skip invalid rows" msgstr "" -#: part/serializers.py:1658 +#: part/serializers.py:1704 msgid "Copy Substitute Parts" msgstr "" -#: part/serializers.py:1659 +#: part/serializers.py:1705 msgid "Copy substitute parts when duplicate BOM items" msgstr "" -#: part/serializers.py:1693 +#: part/serializers.py:1739 msgid "Clear Existing BOM" msgstr "" -#: part/serializers.py:1694 +#: part/serializers.py:1740 msgid "Delete existing BOM items before uploading" msgstr "" -#: part/serializers.py:1724 +#: part/serializers.py:1770 msgid "No part column specified" msgstr "" -#: part/serializers.py:1768 +#: part/serializers.py:1814 msgid "Multiple matching parts found" msgstr "" -#: part/serializers.py:1771 +#: part/serializers.py:1817 msgid "No matching part found" msgstr "" -#: part/serializers.py:1774 +#: part/serializers.py:1820 msgid "Part is not designated as a component" msgstr "" -#: part/serializers.py:1783 +#: part/serializers.py:1829 msgid "Quantity not provided" msgstr "" -#: part/serializers.py:1791 +#: part/serializers.py:1837 msgid "Invalid quantity" msgstr "" -#: part/serializers.py:1812 +#: part/serializers.py:1858 msgid "At least one BOM item is required" msgstr "" @@ -7542,7 +7600,7 @@ msgid "Validate BOM" msgstr "" #: part/templates/part/detail.html:283 part/templates/part/detail.html:284 -#: templates/js/translated/bom.js:1314 templates/js/translated/bom.js:1315 +#: templates/js/translated/bom.js:1320 templates/js/translated/bom.js:1321 msgid "Add BOM Item" msgstr "" @@ -7728,7 +7786,7 @@ msgstr "" msgid "Allocated to Sales Orders" msgstr "" -#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1213 +#: part/templates/part/part_base.html:235 templates/js/translated/bom.js:1219 msgid "Can Build" msgstr "" @@ -8396,7 +8454,7 @@ msgstr "" msgid "Print a border around each label" msgstr "" -#: plugin/builtin/labels/label_sheet.py:47 report/models.py:207 +#: plugin/builtin/labels/label_sheet.py:47 report/models.py:208 msgid "Landscape" msgstr "" @@ -8733,16 +8791,16 @@ msgstr "删除仓储地" msgid "Delete the plugin configuration from the database" msgstr "" -#: report/api.py:175 +#: report/api.py:158 msgid "No valid objects provided to template" msgstr "没有为模板提供有效对象" -#: report/api.py:214 report/api.py:251 +#: report/api.py:197 report/api.py:234 #, python-brace-format msgid "Template file '{template}' is missing or does not exist" msgstr "" -#: report/api.py:331 +#: report/api.py:319 msgid "Test report" msgstr "" @@ -8762,105 +8820,117 @@ msgstr "" msgid "Letter" msgstr "" -#: report/models.py:175 +#: report/models.py:176 msgid "Template name" msgstr "" -#: report/models.py:181 +#: report/models.py:182 msgid "Report template file" msgstr "" -#: report/models.py:188 +#: report/models.py:189 msgid "Report template description" msgstr "" -#: report/models.py:194 +#: report/models.py:195 msgid "Report revision number (auto-increments)" msgstr "" -#: report/models.py:202 +#: report/models.py:203 #, fuzzy #| msgid "Default page size for PDF reports" msgid "Page size for PDF reports" msgstr "PDF 报表默认页面大小" -#: report/models.py:208 +#: report/models.py:209 msgid "Render report in landscape orientation" msgstr "" -#: report/models.py:316 +#: report/models.py:317 msgid "Pattern for generating report filenames" msgstr "" -#: report/models.py:323 +#: report/models.py:324 msgid "Report template is enabled" msgstr "" -#: report/models.py:345 +#: report/models.py:346 msgid "StockItem query filters (comma-separated list of key=value pairs)" msgstr "" -#: report/models.py:352 +#: report/models.py:353 msgid "Include Installed Tests" msgstr "" -#: report/models.py:354 +#: report/models.py:355 msgid "Include test results for stock items installed inside assembled item" msgstr "" -#: report/models.py:422 +#: report/models.py:423 msgid "Build Filters" msgstr "" -#: report/models.py:423 +#: report/models.py:424 msgid "Build query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:462 +#: report/models.py:463 msgid "Part Filters" msgstr "商品过滤器" -#: report/models.py:463 +#: report/models.py:464 msgid "Part query filters (comma-separated list of key=value pairs" msgstr "" -#: report/models.py:495 +#: report/models.py:496 msgid "Purchase order query filters" msgstr "" -#: report/models.py:531 +#: report/models.py:532 msgid "Sales order query filters" msgstr "" -#: report/models.py:567 +#: report/models.py:568 msgid "Return order query filters" msgstr "" -#: report/models.py:615 +#: report/models.py:640 +#, fuzzy +#| msgid "Attachment with this filename already exists" +msgid "Snippet file with this name already exists" +msgstr "使用此文件名的附件已存在" + +#: report/models.py:647 msgid "Snippet" msgstr "" -#: report/models.py:616 +#: report/models.py:648 msgid "Report snippet file" msgstr "" -#: report/models.py:623 +#: report/models.py:655 msgid "Snippet file description" msgstr "" -#: report/models.py:660 +#: report/models.py:713 +#, fuzzy +#| msgid "Attachment with this filename already exists" +msgid "Asset file with this name already exists" +msgstr "使用此文件名的附件已存在" + +#: report/models.py:721 msgid "Asset" msgstr "" -#: report/models.py:661 +#: report/models.py:722 msgid "Report asset file" msgstr "" -#: report/models.py:668 +#: report/models.py:729 msgid "Asset file description" msgstr "" -#: report/models.py:690 +#: report/models.py:751 #, fuzzy #| msgid "Query filters (comma-separated list of key=value pairs)," msgid "stock location query filters (comma-separated list of key=value pairs)" @@ -9197,7 +9267,7 @@ msgstr "" msgid "Stock items cannot be located into structural stock locations!" msgstr "" -#: stock/models.py:656 stock/serializers.py:275 +#: stock/models.py:656 stock/serializers.py:276 msgid "Stock item cannot be created for virtual parts" msgstr "" @@ -9243,7 +9313,7 @@ msgstr "" msgid "Where is this stock item located?" msgstr "" -#: stock/models.py:786 stock/serializers.py:1318 +#: stock/models.py:786 stock/serializers.py:1337 msgid "Packaging this stock item is stored in" msgstr "" @@ -9255,7 +9325,7 @@ msgstr "" msgid "Serial number for this item" msgstr "" -#: stock/models.py:830 stock/serializers.py:1301 +#: stock/models.py:830 stock/serializers.py:1320 msgid "Batch code for this stock item" msgstr "" @@ -9337,7 +9407,7 @@ msgstr "" msgid "Quantity does not match serial numbers" msgstr "" -#: stock/models.py:1501 stock/serializers.py:507 +#: stock/models.py:1501 stock/serializers.py:515 msgid "Serial numbers already exist" msgstr "序列号已存在" @@ -9371,7 +9441,7 @@ msgstr "" msgid "Serialized stock cannot be merged" msgstr "" -#: stock/models.py:1639 stock/serializers.py:1207 +#: stock/models.py:1639 stock/serializers.py:1226 msgid "Duplicate stock items" msgstr "" @@ -9419,201 +9489,202 @@ msgstr "" msgid "Test notes" msgstr "" -#: stock/serializers.py:96 +#: stock/serializers.py:97 #, fuzzy #| msgid "User or group responsible for this order" msgid "Test template for this result" msgstr "负责此订单的用户或群组" -#: stock/serializers.py:115 +#: stock/serializers.py:116 #, fuzzy #| msgid "Allocation items must be provided" msgid "Template ID or test name must be provided" msgstr "必须提供分配的项" -#: stock/serializers.py:169 +#: stock/serializers.py:170 msgid "Serial number is too large" msgstr "" -#: stock/serializers.py:267 +#: stock/serializers.py:268 msgid "Use pack size when adding: the quantity defined is the number of packs" msgstr "" -#: stock/serializers.py:380 +#: stock/serializers.py:388 msgid "Purchase price of this stock item, per unit or pack" msgstr "" -#: stock/serializers.py:442 +#: stock/serializers.py:450 msgid "Enter number of stock items to serialize" msgstr "" -#: stock/serializers.py:455 +#: stock/serializers.py:463 #, python-brace-format msgid "Quantity must not exceed available stock quantity ({q})" msgstr "" -#: stock/serializers.py:462 +#: stock/serializers.py:470 msgid "Enter serial numbers for new items" msgstr "输入新项目的序列号" -#: stock/serializers.py:473 stock/serializers.py:1164 stock/serializers.py:1420 +#: stock/serializers.py:481 stock/serializers.py:1183 stock/serializers.py:1439 msgid "Destination stock location" msgstr "目标库存位置" -#: stock/serializers.py:480 +#: stock/serializers.py:488 msgid "Optional note field" msgstr "" -#: stock/serializers.py:490 +#: stock/serializers.py:498 msgid "Serial numbers cannot be assigned to this part" msgstr "" -#: stock/serializers.py:545 +#: stock/serializers.py:553 msgid "Select stock item to install" msgstr "" -#: stock/serializers.py:552 +#: stock/serializers.py:560 msgid "Quantity to Install" msgstr "" -#: stock/serializers.py:553 +#: stock/serializers.py:561 #, fuzzy #| msgid "Enter quantity for build output" msgid "Enter the quantity of items to install" msgstr "输入生产产出数量" -#: stock/serializers.py:558 stock/serializers.py:633 stock/serializers.py:729 -#: stock/serializers.py:779 +#: stock/serializers.py:566 stock/serializers.py:646 stock/serializers.py:742 +#: stock/serializers.py:792 msgid "Add transaction note (optional)" msgstr "添加交易备注 (可选)" -#: stock/serializers.py:566 +#: stock/serializers.py:574 #, fuzzy #| msgid "Quantity must be a positive number" msgid "Quantity to install must be at least 1" msgstr "数量必须大于0" -#: stock/serializers.py:574 +#: stock/serializers.py:582 msgid "Stock item is unavailable" msgstr "" -#: stock/serializers.py:581 +#: stock/serializers.py:593 msgid "Selected part is not in the Bill of Materials" msgstr "" -#: stock/serializers.py:593 +#: stock/serializers.py:606 #, 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:628 +#: stock/serializers.py:641 msgid "Destination location for uninstalled item" msgstr "" -#: stock/serializers.py:663 +#: stock/serializers.py:676 msgid "Select part to convert stock item into" msgstr "" -#: stock/serializers.py:676 +#: stock/serializers.py:689 msgid "Selected part is not a valid option for conversion" msgstr "" -#: stock/serializers.py:693 +#: stock/serializers.py:706 msgid "Cannot convert stock item with assigned SupplierPart" msgstr "" -#: stock/serializers.py:724 +#: stock/serializers.py:737 msgid "Destination location for returned item" msgstr "" -#: stock/serializers.py:761 +#: stock/serializers.py:774 #, fuzzy #| msgid "Selected stock item not found in BOM" msgid "Select stock items to change status" msgstr "在BOM中找不到选定的库存项" -#: stock/serializers.py:767 +#: stock/serializers.py:780 #, fuzzy #| msgid "Stock item created" msgid "No stock items selected" msgstr "库存项已创建" -#: stock/serializers.py:863 stock/templates/stock/location.html:165 +#: stock/serializers.py:876 stock/serializers.py:939 +#: stock/templates/stock/location.html:165 #: stock/templates/stock/location.html:213 #: stock/templates/stock/location_sidebar.html:5 msgid "Sublocations" msgstr "" -#: stock/serializers.py:1036 +#: stock/serializers.py:1055 msgid "Part must be salable" msgstr "" -#: stock/serializers.py:1040 +#: stock/serializers.py:1059 msgid "Item is allocated to a sales order" msgstr "" -#: stock/serializers.py:1044 +#: stock/serializers.py:1063 msgid "Item is allocated to a build order" msgstr "" -#: stock/serializers.py:1068 +#: stock/serializers.py:1087 msgid "Customer to assign stock items" msgstr "" -#: stock/serializers.py:1074 +#: stock/serializers.py:1093 msgid "Selected company is not a customer" msgstr "" -#: stock/serializers.py:1082 +#: stock/serializers.py:1101 msgid "Stock assignment notes" msgstr "" -#: stock/serializers.py:1092 stock/serializers.py:1346 +#: stock/serializers.py:1111 stock/serializers.py:1365 msgid "A list of stock items must be provided" msgstr "" -#: stock/serializers.py:1171 +#: stock/serializers.py:1190 msgid "Stock merging notes" msgstr "" -#: stock/serializers.py:1176 +#: stock/serializers.py:1195 msgid "Allow mismatched suppliers" msgstr "" -#: stock/serializers.py:1177 +#: stock/serializers.py:1196 msgid "Allow stock items with different supplier parts to be merged" msgstr "" -#: stock/serializers.py:1182 +#: stock/serializers.py:1201 msgid "Allow mismatched status" msgstr "" -#: stock/serializers.py:1183 +#: stock/serializers.py:1202 msgid "Allow stock items with different status codes to be merged" msgstr "" -#: stock/serializers.py:1193 +#: stock/serializers.py:1212 msgid "At least two stock items must be provided" msgstr "" -#: stock/serializers.py:1260 +#: stock/serializers.py:1279 #, fuzzy #| msgid "Change" msgid "No Change" msgstr "更改" -#: stock/serializers.py:1289 +#: stock/serializers.py:1308 msgid "StockItem primary key value" msgstr "" -#: stock/serializers.py:1308 +#: stock/serializers.py:1327 #, fuzzy #| msgid "Stock item created" msgid "Stock item status code" msgstr "库存项已创建" -#: stock/serializers.py:1336 +#: stock/serializers.py:1355 msgid "Stock transaction notes" msgstr "" @@ -9638,7 +9709,7 @@ msgstr "" msgid "Test Report" msgstr "" -#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:280 +#: stock/templates/stock/item.html:89 stock/templates/stock/item.html:283 msgid "Delete Test Data" msgstr "" @@ -9658,11 +9729,11 @@ msgstr "" msgid "Install Stock Item" msgstr "" -#: stock/templates/stock/item.html:268 +#: stock/templates/stock/item.html:271 msgid "Delete all test results for this stock item" msgstr "" -#: stock/templates/stock/item.html:298 templates/js/translated/stock.js:1662 +#: stock/templates/stock/item.html:301 templates/js/translated/stock.js:1662 msgid "Add Test Result" msgstr "" @@ -10593,7 +10664,7 @@ msgid "Delete Location Type" msgstr "删除仓储地" #: templates/InvenTree/settings/settings_staff_js.html:500 -#: templates/InvenTree/settings/stock.html:35 +#: templates/InvenTree/settings/stock.html:36 #, fuzzy #| msgid "New Location" msgid "New Location Type" @@ -10656,7 +10727,7 @@ msgstr "销售订单设置" msgid "Stock Settings" msgstr "库存设置" -#: templates/InvenTree/settings/stock.html:31 +#: templates/InvenTree/settings/stock.html:32 #, fuzzy #| msgid "Stock Locations" msgid "Stock Location Types" @@ -11204,7 +11275,7 @@ msgid "The following parts are low on required stock" msgstr "" #: templates/email/build_order_required_stock.html:18 -#: templates/js/translated/bom.js:1668 templates/js/translated/build.js:2557 +#: templates/js/translated/bom.js:1674 templates/js/translated/build.js:2557 msgid "Required Quantity" msgstr "" @@ -11218,7 +11289,7 @@ msgid "Click on the following link to view this part" msgstr "" #: templates/email/low_stock_notification.html:18 -#: templates/js/translated/part.js:3209 +#: templates/js/translated/part.js:3218 msgid "Minimum Quantity" msgstr "" @@ -11601,62 +11672,68 @@ msgstr "" msgid "No pricing available" msgstr "" -#: templates/js/translated/bom.js:1182 templates/js/translated/build.js:2596 +#: templates/js/translated/bom.js:1184 templates/js/translated/build.js:2622 +#, fuzzy +#| msgid "External Link" +msgid "External stock" +msgstr "外部链接" + +#: templates/js/translated/bom.js:1188 templates/js/translated/build.js:2596 #: templates/js/translated/sales_order.js:1910 msgid "No Stock Available" msgstr "" -#: templates/js/translated/bom.js:1187 templates/js/translated/build.js:2600 +#: templates/js/translated/bom.js:1193 templates/js/translated/build.js:2600 msgid "Includes variant and substitute stock" msgstr "" -#: templates/js/translated/bom.js:1189 templates/js/translated/build.js:2602 +#: templates/js/translated/bom.js:1195 templates/js/translated/build.js:2602 #: templates/js/translated/part.js:1256 #: templates/js/translated/sales_order.js:1907 msgid "Includes variant stock" msgstr "" -#: templates/js/translated/bom.js:1191 templates/js/translated/build.js:2604 +#: templates/js/translated/bom.js:1197 templates/js/translated/build.js:2604 msgid "Includes substitute stock" msgstr "" -#: templates/js/translated/bom.js:1219 templates/js/translated/build.js:2587 +#: templates/js/translated/bom.js:1225 templates/js/translated/build.js:2587 msgid "Consumable item" msgstr "" -#: templates/js/translated/bom.js:1279 +#: templates/js/translated/bom.js:1285 msgid "Validate BOM Item" msgstr "" -#: templates/js/translated/bom.js:1281 +#: templates/js/translated/bom.js:1287 msgid "This line has been validated" msgstr "" -#: templates/js/translated/bom.js:1283 +#: templates/js/translated/bom.js:1289 msgid "Edit substitute parts" msgstr "" -#: templates/js/translated/bom.js:1285 templates/js/translated/bom.js:1480 +#: templates/js/translated/bom.js:1291 templates/js/translated/bom.js:1486 msgid "Edit BOM Item" msgstr "" -#: templates/js/translated/bom.js:1287 +#: templates/js/translated/bom.js:1293 msgid "Delete BOM Item" msgstr "" -#: templates/js/translated/bom.js:1307 +#: templates/js/translated/bom.js:1313 msgid "View BOM" msgstr "" -#: templates/js/translated/bom.js:1391 +#: templates/js/translated/bom.js:1397 msgid "No BOM items found" msgstr "" -#: templates/js/translated/bom.js:1651 templates/js/translated/build.js:2486 +#: templates/js/translated/bom.js:1657 templates/js/translated/build.js:2486 msgid "Required Part" msgstr "" -#: templates/js/translated/bom.js:1677 +#: templates/js/translated/bom.js:1683 msgid "Inherited from parent BOM" msgstr "" @@ -12043,33 +12120,33 @@ msgstr "数量" msgid "Sufficient stock available" msgstr "" -#: templates/js/translated/build.js:2643 +#: templates/js/translated/build.js:2647 #, fuzzy #| msgid "Minimum Stock" msgid "Consumable Item" msgstr "最低库存" -#: templates/js/translated/build.js:2648 +#: templates/js/translated/build.js:2652 #, fuzzy #| msgid "Stock Item" msgid "Tracked item" msgstr "库存项" -#: templates/js/translated/build.js:2655 +#: templates/js/translated/build.js:2659 #: templates/js/translated/sales_order.js:2016 msgid "Build stock" msgstr "" -#: templates/js/translated/build.js:2660 templates/js/translated/stock.js:1829 +#: templates/js/translated/build.js:2664 templates/js/translated/stock.js:1829 msgid "Order stock" msgstr "" -#: templates/js/translated/build.js:2664 +#: templates/js/translated/build.js:2668 #: templates/js/translated/sales_order.js:2010 msgid "Allocate stock" msgstr "" -#: templates/js/translated/build.js:2668 +#: templates/js/translated/build.js:2672 #, fuzzy #| msgid "Confirm stock allocation" msgid "Remove stock allocation" @@ -12983,64 +13060,64 @@ msgstr "" msgid "Subscribed category" msgstr "" -#: templates/js/translated/part.js:2855 +#: templates/js/translated/part.js:2864 msgid "No test templates matching query" msgstr "" -#: templates/js/translated/part.js:2877 templates/js/translated/search.js:342 +#: templates/js/translated/part.js:2886 templates/js/translated/search.js:342 msgid "results" msgstr "" -#: templates/js/translated/part.js:2927 templates/js/translated/stock.js:1446 +#: templates/js/translated/part.js:2936 templates/js/translated/stock.js:1446 msgid "Edit test result" msgstr "" -#: templates/js/translated/part.js:2928 templates/js/translated/stock.js:1447 +#: templates/js/translated/part.js:2937 templates/js/translated/stock.js:1447 #: templates/js/translated/stock.js:1692 msgid "Delete test result" msgstr "" -#: templates/js/translated/part.js:2932 +#: templates/js/translated/part.js:2941 msgid "This test is defined for a parent part" msgstr "" -#: templates/js/translated/part.js:2948 +#: templates/js/translated/part.js:2957 msgid "Edit Test Result Template" msgstr "" -#: templates/js/translated/part.js:2962 +#: templates/js/translated/part.js:2971 msgid "Delete Test Result Template" msgstr "" -#: templates/js/translated/part.js:3041 templates/js/translated/part.js:3042 +#: templates/js/translated/part.js:3050 templates/js/translated/part.js:3051 msgid "No date specified" msgstr "" -#: templates/js/translated/part.js:3044 +#: templates/js/translated/part.js:3053 msgid "Specified date is in the past" msgstr "" -#: templates/js/translated/part.js:3050 +#: templates/js/translated/part.js:3059 msgid "Speculative" msgstr "" -#: templates/js/translated/part.js:3100 +#: templates/js/translated/part.js:3109 msgid "No scheduling information available for this part" msgstr "" -#: templates/js/translated/part.js:3106 +#: templates/js/translated/part.js:3115 msgid "Error fetching scheduling information for this part" msgstr "" -#: templates/js/translated/part.js:3202 +#: templates/js/translated/part.js:3211 msgid "Scheduled Stock Quantities" msgstr "" -#: templates/js/translated/part.js:3218 +#: templates/js/translated/part.js:3227 msgid "Maximum Quantity" msgstr "" -#: templates/js/translated/part.js:3263 +#: templates/js/translated/part.js:3272 msgid "Minimum Stock Level" msgstr "" @@ -14883,9 +14960,6 @@ msgstr "删除项目权限" #~ msgid "Build to allocate parts" #~ msgstr "生产以分配部件" -#~ msgid "Untracked stock has been fully allocated for this Build Order" -#~ msgstr "未跟踪的库存已完全分配给此生产订单" - #~ msgid "Untracked stock has not been fully allocated for this Build Order" #~ msgstr "未跟踪的库存尚未完全分配给此生产订单" diff --git a/InvenTree/machine/api.py b/InvenTree/machine/api.py index 9448d2ea99..3bd2853467 100644 --- a/InvenTree/machine/api.py +++ b/InvenTree/machine/api.py @@ -144,7 +144,9 @@ class MachineRestart(APIView): permission_classes = [permissions.IsAuthenticated] - @extend_schema(responses={200: MachineSerializers.MachineRestartSerializer()}) + @extend_schema( + request=None, responses={200: MachineSerializers.MachineRestartSerializer()} + ) def post(self, request, pk): """Restart machine by pk.""" machine = get_machine(pk) diff --git a/InvenTree/order/api.py b/InvenTree/order/api.py index eee46120f0..8d9735fa4f 100644 --- a/InvenTree/order/api.py +++ b/InvenTree/order/api.py @@ -629,7 +629,7 @@ class PurchaseOrderExtraLineDetail(RetrieveUpdateDestroyAPI): class SalesOrderAttachmentList(AttachmentMixin, ListCreateDestroyAPIView): - """API endpoint for listing (and creating) a SalesOrderAttachment (file upload).""" + """API endpoint for listing, creating and bulk deleting a SalesOrderAttachment (file upload).""" queryset = models.SalesOrderAttachment.objects.all() serializer_class = serializers.SalesOrderAttachmentSerializer @@ -1097,7 +1097,7 @@ class SalesOrderShipmentComplete(CreateAPI): class PurchaseOrderAttachmentList(AttachmentMixin, ListCreateDestroyAPIView): - """API endpoint for listing (and creating) a PurchaseOrderAttachment (file upload).""" + """API endpoint for listing, creating and bulk deleting) a PurchaseOrderAttachment (file upload).""" queryset = models.PurchaseOrderAttachment.objects.all() serializer_class = serializers.PurchaseOrderAttachmentSerializer @@ -1363,7 +1363,7 @@ class ReturnOrderExtraLineDetail(RetrieveUpdateDestroyAPI): class ReturnOrderAttachmentList(AttachmentMixin, ListCreateDestroyAPIView): - """API endpoint for listing (and creating) a ReturnOrderAttachment (file upload).""" + """API endpoint for listing, creating and bulk deleting a ReturnOrderAttachment (file upload).""" queryset = models.ReturnOrderAttachment.objects.all() serializer_class = serializers.ReturnOrderAttachmentSerializer diff --git a/InvenTree/order/models.py b/InvenTree/order/models.py index ca550b19f9..4dd6584f7c 100644 --- a/InvenTree/order/models.py +++ b/InvenTree/order/models.py @@ -207,6 +207,8 @@ class Order( responsible: User (or group) responsible for managing the order """ + REQUIRE_RESPONSIBLE_SETTING = None + class Meta: """Metaclass options. Abstract ensures no database table is created.""" @@ -219,7 +221,7 @@ class Order( """ self.reference_int = self.rebuild_reference_field(self.reference) if not self.creation_date: - self.creation_date = datetime.now().date() + self.creation_date = InvenTree.helpers.current_date() super().save(*args, **kwargs) @@ -227,6 +229,16 @@ class Order( """Custom clean method for the generic order class.""" super().clean() + # 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 not self.responsible: + raise ValidationError({ + 'responsible': _('Responsible user or group must be specified') + }) + # Check that the referenced 'contact' matches the correct 'company' if self.company and self.contact: if self.contact.company != self.company: @@ -240,7 +252,7 @@ class Order( It requires any subclasses to implement the get_status_class() class method """ - today = datetime.now().date() + today = InvenTree.helpers.current_date() return ( Q(status__in=cls.get_status_class().OPEN) & ~Q(target_date=None) @@ -347,6 +359,9 @@ class PurchaseOrder(TotalPriceMixin, Order): target_date: Expected delivery target date for PurchaseOrder completion (optional) """ + REFERENCE_PATTERN_SETTING = 'PURCHASEORDER_REFERENCE_PATTERN' + REQUIRE_RESPONSIBLE_SETTING = 'PURCHASEORDER_REQUIRE_RESPONSIBLE' + def get_absolute_url(self): """Get the 'web' URL for this order.""" if settings.ENABLE_CLASSIC_FRONTEND: @@ -372,9 +387,6 @@ class PurchaseOrder(TotalPriceMixin, Order): return defaults - # Global setting for specifying reference pattern - REFERENCE_PATTERN_SETTING = 'PURCHASEORDER_REFERENCE_PATTERN' - @staticmethod def filterByDate(queryset, min_date, max_date): """Filter by 'minimum and maximum date range'. @@ -572,7 +584,7 @@ class PurchaseOrder(TotalPriceMixin, Order): """ if self.is_pending: self.status = PurchaseOrderStatus.PLACED.value - self.issue_date = datetime.now().date() + self.issue_date = InvenTree.helpers.current_date() self.save() trigger_event('purchaseorder.placed', id=self.pk) @@ -592,7 +604,7 @@ class PurchaseOrder(TotalPriceMixin, Order): """ if self.status == PurchaseOrderStatus.PLACED: self.status = PurchaseOrderStatus.COMPLETE.value - self.complete_date = datetime.now().date() + self.complete_date = InvenTree.helpers.current_date() self.save() @@ -805,6 +817,9 @@ class PurchaseOrder(TotalPriceMixin, Order): class SalesOrder(TotalPriceMixin, Order): """A SalesOrder represents a list of goods shipped outwards to a customer.""" + REFERENCE_PATTERN_SETTING = 'SALESORDER_REFERENCE_PATTERN' + REQUIRE_RESPONSIBLE_SETTING = 'SALESORDER_REQUIRE_RESPONSIBLE' + def get_absolute_url(self): """Get the 'web' URL for this order.""" if settings.ENABLE_CLASSIC_FRONTEND: @@ -828,9 +843,6 @@ class SalesOrder(TotalPriceMixin, Order): return defaults - # Global setting for specifying reference pattern - REFERENCE_PATTERN_SETTING = 'SALESORDER_REFERENCE_PATTERN' - @staticmethod def filterByDate(queryset, min_date, max_date): """Filter by "minimum and maximum date range". @@ -1018,7 +1030,7 @@ class SalesOrder(TotalPriceMixin, Order): """Change this order from 'PENDING' to 'IN_PROGRESS'.""" if self.status == SalesOrderStatus.PENDING: self.status = SalesOrderStatus.IN_PROGRESS.value - self.issue_date = datetime.now().date() + self.issue_date = InvenTree.helpers.current_date() self.save() trigger_event('salesorder.issued', id=self.pk) @@ -1032,7 +1044,7 @@ class SalesOrder(TotalPriceMixin, Order): self.status = SalesOrderStatus.SHIPPED.value self.shipped_by = user - self.shipment_date = datetime.now() + self.shipment_date = InvenTree.helpers.current_date() self.save() @@ -1334,7 +1346,7 @@ class PurchaseOrderLineItem(OrderLineItem): OVERDUE_FILTER = ( Q(received__lt=F('quantity')) & ~Q(target_date=None) - & Q(target_date__lt=datetime.now().date()) + & Q(target_date__lt=InvenTree.helpers.current_date()) ) @staticmethod @@ -1493,7 +1505,7 @@ class SalesOrderLineItem(OrderLineItem): OVERDUE_FILTER = ( Q(shipped__lt=F('quantity')) & ~Q(target_date=None) - & Q(target_date__lt=datetime.now().date()) + & Q(target_date__lt=InvenTree.helpers.current_date()) ) @staticmethod @@ -1736,7 +1748,9 @@ class SalesOrderShipment( allocation.complete_allocation(user) # Update the "shipment" date - self.shipment_date = kwargs.get('shipment_date', datetime.now()) + self.shipment_date = kwargs.get( + 'shipment_date', InvenTree.helpers.current_date() + ) self.shipped_by = user # Was a tracking number provided? @@ -1943,6 +1957,9 @@ class ReturnOrder(TotalPriceMixin, Order): status: The status of the order (refer to status_codes.ReturnOrderStatus) """ + REFERENCE_PATTERN_SETTING = 'RETURNORDER_REFERENCE_PATTERN' + REQUIRE_RESPONSIBLE_SETTING = 'RETURNORDER_REQUIRE_RESPONSIBLE' + def get_absolute_url(self): """Get the 'web' URL for this order.""" if settings.ENABLE_CLASSIC_FRONTEND: @@ -1968,8 +1985,6 @@ class ReturnOrder(TotalPriceMixin, Order): return defaults - REFERENCE_PATTERN_SETTING = 'RETURNORDER_REFERENCE_PATTERN' - def __str__(self): """Render a string representation of this ReturnOrder.""" return f"{self.reference} - {self.customer.name if self.customer else _('no customer')}" @@ -2063,7 +2078,7 @@ class ReturnOrder(TotalPriceMixin, Order): """Complete this ReturnOrder (if not already completed).""" if self.status == ReturnOrderStatus.IN_PROGRESS: self.status = ReturnOrderStatus.COMPLETE.value - self.complete_date = datetime.now().date() + self.complete_date = InvenTree.helpers.current_date() self.save() trigger_event('returnorder.completed', id=self.pk) @@ -2076,7 +2091,7 @@ class ReturnOrder(TotalPriceMixin, Order): """Issue this ReturnOrder (if currently pending).""" if self.status == ReturnOrderStatus.PENDING: self.status = ReturnOrderStatus.IN_PROGRESS.value - self.issue_date = datetime.now().date() + self.issue_date = InvenTree.helpers.current_date() self.save() trigger_event('returnorder.issued', id=self.pk) @@ -2149,7 +2164,7 @@ class ReturnOrder(TotalPriceMixin, Order): ) # Update the LineItem - line.received_date = datetime.now().date() + line.received_date = InvenTree.helpers.current_date() line.save() trigger_event('returnorder.received', id=self.pk) diff --git a/InvenTree/order/serializers.py b/InvenTree/order/serializers.py index 3405e7b8b8..42f6a3c69e 100644 --- a/InvenTree/order/serializers.py +++ b/InvenTree/order/serializers.py @@ -5,7 +5,16 @@ from decimal import Decimal from django.core.exceptions import ValidationError as DjangoValidationError from django.db import models, transaction -from django.db.models import BooleanField, Case, ExpressionWrapper, F, Q, Value, When +from django.db.models import ( + BooleanField, + Case, + ExpressionWrapper, + F, + Prefetch, + Q, + Value, + When, +) from django.utils.translation import gettext_lazy as _ from rest_framework import serializers @@ -14,6 +23,8 @@ from sql_util.utils import SubqueryCount import order.models import part.filters +import part.filters as part_filters +import part.models as part_models import stock.models import stock.serializers from common.serializers import ProjectCodeSerializer @@ -23,7 +34,13 @@ from company.serializers import ( ContactSerializer, SupplierPartSerializer, ) -from InvenTree.helpers import extract_serial_numbers, hash_barcode, normalize, str2bool +from InvenTree.helpers import ( + current_date, + extract_serial_numbers, + hash_barcode, + normalize, + str2bool, +) from InvenTree.serializers import ( InvenTreeAttachmentSerializer, InvenTreeCurrencySerializer, @@ -375,6 +392,17 @@ class PurchaseOrderLineItemSerializer(InvenTreeModelSerializer): - "total_price" = purchase_price * quantity - "overdue" status (boolean field) """ + queryset = queryset.prefetch_related( + Prefetch( + 'part__part', + queryset=part_models.Part.objects.annotate( + category_default_location=part_filters.annotate_default_location( + 'category__' + ) + ).prefetch_related(None), + ) + ) + queryset = queryset.annotate( total_price=ExpressionWrapper( F('purchase_price') * F('quantity'), output_field=models.DecimalField() @@ -1118,11 +1146,12 @@ class SalesOrderShipmentCompleteSerializer(serializers.ModelSerializer): user = request.user # Extract shipping date (defaults to today's date) - shipment_date = data.get('shipment_date', datetime.now()) + now = current_date() + shipment_date = data.get('shipment_date', now) if shipment_date is None: # Shipment date should not be None - check above only # checks if shipment_date exists in data - shipment_date = datetime.now() + shipment_date = now shipment.complete_shipment( user, diff --git a/InvenTree/order/test_api.py b/InvenTree/order/test_api.py index c00f577b07..d9f63d67c0 100644 --- a/InvenTree/order/test_api.py +++ b/InvenTree/order/test_api.py @@ -13,6 +13,7 @@ from djmoney.money import Money from icalendar import Calendar from rest_framework import status +from common.models import InvenTreeSetting from common.settings import currency_codes from company.models import Company, SupplierPart, SupplierPriceBreak from InvenTree.status_codes import ( @@ -27,6 +28,7 @@ from InvenTree.unit_test import InvenTreeAPITestCase from order import models from part.models import Part from stock.models import StockItem +from users.models import Owner class OrderTest(InvenTreeAPITestCase): @@ -347,15 +349,35 @@ class PurchaseOrderTest(OrderTest): """Test that we can create a new PurchaseOrder via the API.""" self.assignRole('purchase_order.add') - self.post( - reverse('api-po-list'), - { - 'reference': 'PO-12345678', - 'supplier': 1, - 'description': 'A test purchase order', - }, - expected_code=201, - ) + setting = 'PURCHASEORDER_REQUIRE_RESPONSIBLE' + url = reverse('api-po-list') + + InvenTreeSetting.set_setting(setting, False) + + data = { + 'reference': 'PO-12345678', + 'supplier': 1, + 'description': 'A test purchase order', + } + + self.post(url, data, expected_code=201) + + # Check the 'responsible required' field + InvenTreeSetting.set_setting(setting, True) + + data['reference'] = 'PO-12345679' + data['responsible'] = None + + response = self.post(url, data, expected_code=400) + + self.assertIn('Responsible user or group must be specified', str(response.data)) + + data['responsible'] = Owner.objects.first().pk + + response = self.post(url, data, expected_code=201) + + # Revert the setting to previous value + InvenTreeSetting.set_setting(setting, False) def test_po_creation_date(self): """Test that we can create set the creation_date field of PurchaseOrder via the API.""" diff --git a/InvenTree/part/api.py b/InvenTree/part/api.py index 7b7ec1c7e5..fb46913cf1 100644 --- a/InvenTree/part/api.py +++ b/InvenTree/part/api.py @@ -10,6 +10,8 @@ from django.utils.translation import gettext_lazy as _ from django_filters import rest_framework as rest_filters from django_filters.rest_framework import DjangoFilterBackend +from drf_spectacular.types import OpenApiTypes +from drf_spectacular.utils import extend_schema_field from rest_framework import permissions, serializers, status from rest_framework.exceptions import ValidationError from rest_framework.response import Response @@ -214,6 +216,7 @@ class CategoryFilter(rest_filters.FilterSet): help_text=_('Exclude sub-categories under the specified category'), ) + @extend_schema_field(OpenApiTypes.INT) def filter_exclude_tree(self, queryset, name, value): """Exclude all sub-categories under the specified category.""" # Exclude the specified category @@ -406,7 +409,7 @@ class PartInternalPriceList(ListCreateAPI): class PartAttachmentList(AttachmentMixin, ListCreateDestroyAPIView): - """API endpoint for listing (and creating) a PartAttachment (file upload).""" + """API endpoint for listing, creating and bulk deleting a PartAttachment (file upload).""" queryset = PartAttachment.objects.all() serializer_class = part_serializers.PartAttachmentSerializer @@ -1003,6 +1006,7 @@ class PartFilter(rest_filters.FilterSet): method='filter_convert_from', ) + @extend_schema_field(OpenApiTypes.INT) def filter_convert_from(self, queryset, name, part): """Limit the queryset to valid conversion options for the specified part.""" conversion_options = part.get_conversion_options() @@ -1017,6 +1021,7 @@ class PartFilter(rest_filters.FilterSet): method='filter_exclude_tree', ) + @extend_schema_field(OpenApiTypes.INT) def filter_exclude_tree(self, queryset, name, part): """Exclude all parts and variants 'down' from the specified part from the queryset.""" children = part.get_descendants(include_self=True) @@ -1027,6 +1032,7 @@ class PartFilter(rest_filters.FilterSet): label='Ancestor', queryset=Part.objects.all(), method='filter_ancestor' ) + @extend_schema_field(OpenApiTypes.INT) def filter_ancestor(self, queryset, name, part): """Limit queryset to descendants of the specified ancestor part.""" descendants = part.get_descendants(include_self=False) @@ -1044,6 +1050,7 @@ class PartFilter(rest_filters.FilterSet): label='In BOM Of', queryset=Part.objects.all(), method='filter_in_bom' ) + @extend_schema_field(OpenApiTypes.INT) def filter_in_bom(self, queryset, name, part): """Limit queryset to parts in the BOM for the specified part.""" bom_parts = part.get_parts_in_bom() @@ -1528,6 +1535,7 @@ class PartParameterTemplateFilter(rest_filters.FilterSet): queryset=Part.objects.all(), method='filter_part', label=_('Part') ) + @extend_schema_field(OpenApiTypes.INT) def filter_part(self, queryset, name, part): """Filter queryset to include only PartParameterTemplates which are referenced by a part.""" parameters = PartParameter.objects.filter(part=part) @@ -1541,6 +1549,7 @@ class PartParameterTemplateFilter(rest_filters.FilterSet): label=_('Category'), ) + @extend_schema_field(OpenApiTypes.INT) def filter_category(self, queryset, name, category): """Filter queryset to include only PartParameterTemplates which are referenced by parts in this category.""" cats = category.get_descendants(include_self=True) @@ -1828,6 +1837,7 @@ class BomFilter(rest_filters.FilterSet): queryset=Part.objects.all(), method='filter_uses', label=_('Uses') ) + @extend_schema_field(OpenApiTypes.INT) def filter_uses(self, queryset, name, part): """Filter the queryset based on the specified part.""" return queryset.filter(part.get_used_in_bom_item_filter()) diff --git a/InvenTree/part/filters.py b/InvenTree/part/filters.py index 42a41eb923..4d247529b9 100644 --- a/InvenTree/part/filters.py +++ b/InvenTree/part/filters.py @@ -287,6 +287,32 @@ def annotate_category_parts(): ) +def annotate_default_location(reference=''): + """Construct a queryset that finds the closest default location in the part's category tree. + + If the part's category has its own default_location, this is returned. + If not, the category tree is traversed until a value is found. + """ + subquery = part.models.PartCategory.objects.filter( + tree_id=OuterRef(f'{reference}tree_id'), + lft__lt=OuterRef(f'{reference}lft'), + rght__gt=OuterRef(f'{reference}rght'), + level__lte=OuterRef(f'{reference}level'), + parent__isnull=False, + ) + + return Coalesce( + F(f'{reference}default_location'), + Subquery( + subquery.order_by('-level') + .filter(default_location__isnull=False) + .values('default_location') + ), + Value(None), + output_field=IntegerField(), + ) + + def annotate_sub_categories(): """Construct a queryset annotation which returns the number of subcategories for each provided category.""" subquery = part.models.PartCategory.objects.filter( diff --git a/InvenTree/part/helpers.py b/InvenTree/part/helpers.py index 3da875d3da..ab20c795d7 100644 --- a/InvenTree/part/helpers.py +++ b/InvenTree/part/helpers.py @@ -25,7 +25,9 @@ def compile_full_name_template(*args, **kwargs): global _part_full_name_template global _part_full_name_template_string - template_string = InvenTreeSetting.get_setting('PART_NAME_FORMAT', '') + template_string = InvenTreeSetting.get_setting( + 'PART_NAME_FORMAT', backup_value='', cache=True + ) # Skip if the template string has not changed if ( diff --git a/InvenTree/part/migrations/0109_auto_20230517_1048.py b/InvenTree/part/migrations/0109_auto_20230517_1048.py index 01e3ad0026..d2ef071050 100644 --- a/InvenTree/part/migrations/0109_auto_20230517_1048.py +++ b/InvenTree/part/migrations/0109_auto_20230517_1048.py @@ -138,6 +138,8 @@ def update_parameter_values(apps, schema_editor): class Migration(migrations.Migration): + atomic = False + dependencies = [ ('part', '0108_auto_20230516_1334'), ] diff --git a/InvenTree/part/models.py b/InvenTree/part/models.py index c962ba3d81..9c4e92d3d5 100644 --- a/InvenTree/part/models.py +++ b/InvenTree/part/models.py @@ -37,6 +37,7 @@ import common.models import common.settings import InvenTree.conversion import InvenTree.fields +import InvenTree.helpers import InvenTree.models import InvenTree.ready import InvenTree.tasks @@ -1728,7 +1729,7 @@ class Part( self.bom_checksum = self.get_bom_hash() self.bom_checked_by = user - self.bom_checked_date = datetime.now().date() + self.bom_checked_date = InvenTree.helpers.current_date() self.save() @@ -2715,7 +2716,7 @@ class PartPricing(common.models.MetaMixin): ) if days > 0: - date_threshold = datetime.now().date() - timedelta(days=days) + date_threshold = InvenTree.helpers.current_date() - timedelta(days=days) items = items.filter(updated__gte=date_threshold) for item in items: @@ -3428,6 +3429,13 @@ class PartTestTemplate(InvenTree.models.InvenTreeMetadataModel): self.key = helpers.generateTestKey(self.test_name) + if len(self.key) == 0: + raise ValidationError({ + 'test_name': _( + 'Invalid template name - must include at least one alphanumeric character' + ) + }) + self.validate_unique() super().clean() @@ -3445,7 +3453,9 @@ class PartTestTemplate(InvenTree.models.InvenTreeMetadataModel): if tests.exists(): raise ValidationError({ - 'test_name': _('Test with this name already exists for this part') + 'test_name': _( + 'Test template with the same key already exists for part' + ) }) super().validate_unique(exclude) @@ -3824,6 +3834,28 @@ class PartCategoryParameterTemplate(InvenTree.models.InvenTreeMetadataModel): return f'{self.category.name} | {self.parameter_template.name} | {self.default_value}' return f'{self.category.name} | {self.parameter_template.name}' + def clean(self): + """Validate this PartCategoryParameterTemplate instance. + + Checks the provided 'default_value', and (if not blank), ensure it is valid. + """ + super().clean() + + self.default_value = ( + '' if self.default_value is None else str(self.default_value.strip()) + ) + + if self.default_value and InvenTreeSetting.get_setting( + 'PART_PARAMETER_ENFORCE_UNITS', True, cache=False, create=False + ): + if self.parameter_template.units: + try: + InvenTree.conversion.convert_physical_value( + self.default_value, self.parameter_template.units + ) + except ValidationError as e: + raise ValidationError({'default_value': e.message}) + category = models.ForeignKey( PartCategory, on_delete=models.CASCADE, diff --git a/InvenTree/part/serializers.py b/InvenTree/part/serializers.py index c09504853c..f02ade9ed9 100644 --- a/InvenTree/part/serializers.py +++ b/InvenTree/part/serializers.py @@ -74,12 +74,14 @@ class CategorySerializer(InvenTree.serializers.InvenTreeModelSerializer): 'level', 'parent', 'part_count', + 'subcategories', 'pathstring', 'path', 'starred', 'url', 'structural', 'icon', + 'parent_default_location', ] def __init__(self, *args, **kwargs): @@ -99,13 +101,22 @@ class CategorySerializer(InvenTree.serializers.InvenTreeModelSerializer): def annotate_queryset(queryset): """Annotate extra information to the queryset.""" # Annotate the number of 'parts' which exist in each category (including subcategories!) - queryset = queryset.annotate(part_count=part.filters.annotate_category_parts()) + queryset = queryset.annotate( + part_count=part.filters.annotate_category_parts(), + subcategories=part.filters.annotate_sub_categories(), + ) + + queryset = queryset.annotate( + parent_default_location=part.filters.annotate_default_location('parent__') + ) return queryset url = serializers.CharField(source='get_absolute_url', read_only=True) - part_count = serializers.IntegerField(read_only=True) + part_count = serializers.IntegerField(read_only=True, label=_('Parts')) + + subcategories = serializers.IntegerField(read_only=True, label=_('Subcategories')) level = serializers.IntegerField(read_only=True) @@ -115,6 +126,8 @@ class CategorySerializer(InvenTree.serializers.InvenTreeModelSerializer): child=serializers.DictField(), source='get_path', read_only=True ) + parent_default_location = serializers.IntegerField(read_only=True) + class CategoryTree(InvenTree.serializers.InvenTreeModelSerializer): """Serializer for PartCategory tree.""" @@ -277,11 +290,13 @@ class PartBriefSerializer(InvenTree.serializers.InvenTreeModelSerializer): 'pk', 'IPN', 'barcode_hash', + 'category_default_location', 'default_location', 'name', 'revision', 'full_name', 'description', + 'image', 'thumbnail', 'active', 'assembly', @@ -307,6 +322,9 @@ class PartBriefSerializer(InvenTree.serializers.InvenTreeModelSerializer): self.fields.pop('pricing_min') self.fields.pop('pricing_max') + category_default_location = serializers.IntegerField(read_only=True) + + image = InvenTree.serializers.InvenTreeImageSerializerField(read_only=True) thumbnail = serializers.CharField(source='get_thumbnail_url', read_only=True) # Pricing fields @@ -603,6 +621,7 @@ class PartSerializer( 'allocated_to_build_orders', 'allocated_to_sales_orders', 'building', + 'category_default_location', 'in_stock', 'ordering', 'required_for_build_orders', @@ -758,6 +777,12 @@ class PartSerializer( required_for_sales_orders=part.filters.annotate_sales_order_requirements(), ) + queryset = queryset.annotate( + category_default_location=part.filters.annotate_default_location( + 'category__' + ) + ) + return queryset def get_starred(self, part) -> bool: @@ -797,6 +822,7 @@ class PartSerializer( unallocated_stock = serializers.FloatField( read_only=True, label=_('Unallocated Stock') ) + category_default_location = serializers.IntegerField(read_only=True) variant_stock = serializers.FloatField(read_only=True, label=_('Variant Stock')) minimum_stock = serializers.FloatField() diff --git a/InvenTree/part/stocktake.py b/InvenTree/part/stocktake.py index 31de40bbfb..1bdd41f977 100644 --- a/InvenTree/part/stocktake.py +++ b/InvenTree/part/stocktake.py @@ -266,7 +266,7 @@ def generate_stocktake_report(**kwargs): buffer = io.StringIO() buffer.write(dataset.export('csv')) - today = datetime.now().date().isoformat() + today = InvenTree.helpers.current_date().isoformat() filename = f'InvenTree_Stocktake_{today}.csv' report_file = ContentFile(buffer.getvalue(), name=filename) diff --git a/InvenTree/part/test_api.py b/InvenTree/part/test_api.py index 4862750ae8..9459ee3bae 100644 --- a/InvenTree/part/test_api.py +++ b/InvenTree/part/test_api.py @@ -196,6 +196,11 @@ class PartCategoryAPITest(InvenTreeAPITestCase): # Add some more category templates via the API n = PartParameterTemplate.objects.count() + # Ensure validation of parameter values is disabled for these checks + InvenTreeSetting.set_setting( + 'PART_PARAMETER_ENFORCE_UNITS', False, change_user=None + ) + for template in PartParameterTemplate.objects.all(): response = self.post( url, @@ -486,7 +491,7 @@ class PartCategoryAPITest(InvenTreeAPITestCase): PartCategory.objects.rebuild() - with self.assertNumQueriesLessThan(10): + with self.assertNumQueriesLessThan(12): response = self.get(reverse('api-part-category-tree'), expected_code=200) self.assertEqual(len(response.data), PartCategory.objects.count()) diff --git a/InvenTree/part/test_part.py b/InvenTree/part/test_part.py index 98f9dc5410..57f91af817 100644 --- a/InvenTree/part/test_part.py +++ b/InvenTree/part/test_part.py @@ -6,6 +6,7 @@ from django.conf import settings from django.core.cache import cache from django.core.exceptions import ValidationError from django.test import TestCase +from django.test.utils import override_settings from allauth.account.models import EmailAddress @@ -63,6 +64,7 @@ class TemplateTagTest(InvenTreeTestCase): """Test the 'instance name' setting.""" self.assertEqual(inventree_extras.inventree_instance_name(), 'InvenTree') + @override_settings(SITE_URL=None) def test_inventree_base_url(self): """Test that the base URL tag returns correctly.""" self.assertEqual(inventree_extras.inventree_base_url(), '') @@ -431,6 +433,29 @@ class TestTemplateTest(TestCase): self.assertEqual(variant.getTestTemplates().count(), n + 1) + def test_key_generation(self): + """Test the key generation method.""" + variant = Part.objects.get(pk=10004) + + invalid_names = ['', '+', '+++++++', ' ', '<>$&&&'] + + for name in invalid_names: + template = PartTestTemplate(part=variant, test_name=name) + with self.assertRaises(ValidationError): + template.clean() + + valid_names = [ + 'Собранный щит', + '!! 123 Собранный щит <><><> $$$$$ !!!', + '----hello world----', + 'Olá Mundo', + '我不懂中文', + ] + + for name in valid_names: + template = PartTestTemplate(part=variant, test_name=name) + template.clean() + class PartSettingsTest(InvenTreeTestCase): """Tests to ensure that the user-configurable default values work as expected. diff --git a/InvenTree/plugin/api.py b/InvenTree/plugin/api.py index be16328c0a..f14ab7e719 100644 --- a/InvenTree/plugin/api.py +++ b/InvenTree/plugin/api.py @@ -466,7 +466,6 @@ plugin_api_urls = [ # Plugin management path('reload/', PluginReload.as_view(), name='api-plugin-reload'), path('install/', PluginInstall.as_view(), name='api-plugin-install'), - path('activate/', PluginActivate.as_view(), name='api-plugin-activate'), # Registry status path( 'status/', diff --git a/InvenTree/plugin/apps.py b/InvenTree/plugin/apps.py index affc62587d..8c037ba114 100644 --- a/InvenTree/plugin/apps.py +++ b/InvenTree/plugin/apps.py @@ -10,7 +10,7 @@ from django.apps import AppConfig from maintenance_mode.core import set_maintenance_mode -from InvenTree.ready import canAppAccessDatabase, isInMainThread +from InvenTree.ready import canAppAccessDatabase, isInMainThread, isInWorkerThread from plugin import registry logger = logging.getLogger('inventree') @@ -24,7 +24,8 @@ class PluginAppConfig(AppConfig): def ready(self): """The ready method is extended to initialize plugins.""" # skip loading if we run in a background thread - if not isInMainThread(): + + if not isInMainThread() and not isInWorkerThread(): return if not canAppAccessDatabase( diff --git a/InvenTree/plugin/base/event/events.py b/InvenTree/plugin/base/event/events.py index 125d1b17bf..752a7a8d85 100644 --- a/InvenTree/plugin/base/event/events.py +++ b/InvenTree/plugin/base/event/events.py @@ -117,7 +117,7 @@ def allow_table_event(table_name): return False # pragma: no cover # Prevent table events when in testing mode (saves a lot of time) - if settings.TESTING: + if settings.TESTING and not settings.TESTING_TABLE_EVENTS: return False table_name = table_name.lower().strip() diff --git a/InvenTree/plugin/base/integration/ScheduleMixin.py b/InvenTree/plugin/base/integration/ScheduleMixin.py index 201f0ea5cd..6a60197d75 100644 --- a/InvenTree/plugin/base/integration/ScheduleMixin.py +++ b/InvenTree/plugin/base/integration/ScheduleMixin.py @@ -112,7 +112,7 @@ class ScheduleMixin: @property def has_scheduled_tasks(self): """Are tasks defined for this plugin.""" - return bool(self.scheduled_tasks) + return bool(self.get_scheduled_tasks()) def validate_scheduled_tasks(self): """Check that the provided scheduled tasks are valid.""" diff --git a/InvenTree/plugin/plugin.py b/InvenTree/plugin/plugin.py index 5b70ac49e1..6cafd510c0 100644 --- a/InvenTree/plugin/plugin.py +++ b/InvenTree/plugin/plugin.py @@ -138,7 +138,13 @@ class MixinBase: if fnc_name is True: return True - return getattr(self, fnc_name, True) + attr = getattr(self, fnc_name, True) + + if callable(attr): + return attr() + else: + return attr + return False def add_mixin(self, key: str, fnc_enabled=True, cls=None): diff --git a/InvenTree/plugin/test_api.py b/InvenTree/plugin/test_api.py index a0474c551d..b66282f21b 100644 --- a/InvenTree/plugin/test_api.py +++ b/InvenTree/plugin/test_api.py @@ -90,12 +90,19 @@ class PluginDetailAPITest(PluginMixin, InvenTreeAPITestCase): def test_plugin_activate(self): """Test the plugin activate.""" test_plg = self.plugin_confs.first() + assert test_plg is not None def assert_plugin_active(self, active): - self.assertEqual(PluginConfig.objects.all().first().active, active) + plgs = PluginConfig.objects.all().first() + assert plgs is not None + self.assertEqual(plgs.active, active) # Should not work - not a superuser - response = self.client.post(reverse('api-plugin-activate'), {}, follow=True) + response = self.client.post( + reverse('api-plugin-detail-activate', kwargs={'pk': test_plg.pk}), + {}, + follow=True, + ) self.assertEqual(response.status_code, 403) # Make user superuser @@ -109,7 +116,7 @@ class PluginDetailAPITest(PluginMixin, InvenTreeAPITestCase): # Activate plugin with detail url assert_plugin_active(self, False) response = self.client.patch( - reverse('api-plugin-detail-activate', kwargs={'pk': test_plg.id}), + reverse('api-plugin-detail-activate', kwargs={'pk': test_plg.pk}), {}, follow=True, ) @@ -123,7 +130,9 @@ class PluginDetailAPITest(PluginMixin, InvenTreeAPITestCase): # Activate plugin assert_plugin_active(self, False) response = self.client.patch( - reverse('api-plugin-activate'), {'pk': test_plg.pk}, follow=True + reverse('api-plugin-detail-activate', kwargs={'pk': test_plg.pk}), + {}, + follow=True, ) self.assertEqual(response.status_code, 200) assert_plugin_active(self, True) @@ -133,6 +142,8 @@ class PluginDetailAPITest(PluginMixin, InvenTreeAPITestCase): url = reverse('admin:plugin_pluginconfig_changelist') test_plg = self.plugin_confs.first() + assert test_plg is not None + # deactivate plugin response = self.client.post( url, @@ -181,6 +192,8 @@ class PluginDetailAPITest(PluginMixin, InvenTreeAPITestCase): """Test the PluginConfig model.""" # check mixin registry plg = self.plugin_confs.first() + assert plg is not None + mixin_dict = plg.mixins() self.assertIn('base', mixin_dict) self.assertDictContainsSubset( @@ -190,6 +203,8 @@ class PluginDetailAPITest(PluginMixin, InvenTreeAPITestCase): # check reload on save with self.assertWarns(Warning) as cm: plg_inactive = self.plugin_confs.filter(active=False).first() + assert plg_inactive is not None + plg_inactive.active = True plg_inactive.save() self.assertEqual(cm.warning.args[0], 'A reload was triggered') @@ -208,7 +223,7 @@ class PluginDetailAPITest(PluginMixin, InvenTreeAPITestCase): # Wrong with pk with self.assertRaises(NotFound) as exc: - check_plugin(plugin_slug=None, plugin_pk='123') + check_plugin(plugin_slug=None, plugin_pk=123) self.assertEqual(str(exc.exception.detail), "Plugin '123' not installed") def test_plugin_settings(self): @@ -219,6 +234,8 @@ class PluginDetailAPITest(PluginMixin, InvenTreeAPITestCase): # Activate the 'sample' plugin via the API cfg = PluginConfig.objects.filter(key='sample').first() + assert cfg is not None + url = reverse('api-plugin-detail-activate', kwargs={'pk': cfg.pk}) self.client.patch(url, {}, expected_code=200) diff --git a/InvenTree/report/api.py b/InvenTree/report/api.py index 2b39a96e84..315c6b0159 100644 --- a/InvenTree/report/api.py +++ b/InvenTree/report/api.py @@ -17,31 +17,14 @@ import common.models import InvenTree.helpers import order.models import part.models +import report.models +import report.serializers from InvenTree.api import MetadataView from InvenTree.exceptions import log_error from InvenTree.filters import InvenTreeSearchFilter from InvenTree.mixins import ListCreateAPI, RetrieveAPI, RetrieveUpdateDestroyAPI from stock.models import StockItem, StockItemAttachment, StockLocation -from .models import ( - BillOfMaterialsReport, - BuildReport, - PurchaseOrderReport, - ReturnOrderReport, - SalesOrderReport, - StockLocationReport, - TestReport, -) -from .serializers import ( - BOMReportSerializer, - BuildReportSerializer, - PurchaseOrderReportSerializer, - ReturnOrderReportSerializer, - SalesOrderReportSerializer, - StockLocationReportSerializer, - TestReportSerializer, -) - class ReportListView(ListCreateAPI): """Generic API class for report templates.""" @@ -264,7 +247,12 @@ class ReportPrintMixin: except Exception as exc: # Log the exception to the database - log_error(request.path) + if InvenTree.helpers.str2bool( + common.models.InvenTreeSetting.get_setting( + 'REPORT_LOG_ERRORS', cache=False + ) + ): + log_error(request.path) # Re-throw the exception to the client as a DRF exception raise ValidationError({ @@ -287,8 +275,8 @@ class StockItemTestReportMixin(ReportFilterMixin): ITEM_MODEL = StockItem ITEM_KEY = 'item' - queryset = TestReport.objects.all() - serializer_class = TestReportSerializer + queryset = report.models.TestReport.objects.all() + serializer_class = report.serializers.TestReportSerializer class StockItemTestReportList(StockItemTestReportMixin, ReportListView): @@ -338,8 +326,8 @@ class BOMReportMixin(ReportFilterMixin): ITEM_MODEL = part.models.Part ITEM_KEY = 'part' - queryset = BillOfMaterialsReport.objects.all() - serializer_class = BOMReportSerializer + queryset = report.models.BillOfMaterialsReport.objects.all() + serializer_class = report.serializers.BOMReportSerializer class BOMReportList(BOMReportMixin, ReportListView): @@ -372,8 +360,8 @@ class BuildReportMixin(ReportFilterMixin): ITEM_MODEL = build.models.Build ITEM_KEY = 'build' - queryset = BuildReport.objects.all() - serializer_class = BuildReportSerializer + queryset = report.models.BuildReport.objects.all() + serializer_class = report.serializers.BuildReportSerializer class BuildReportList(BuildReportMixin, ReportListView): @@ -406,8 +394,8 @@ class PurchaseOrderReportMixin(ReportFilterMixin): ITEM_MODEL = order.models.PurchaseOrder ITEM_KEY = 'order' - queryset = PurchaseOrderReport.objects.all() - serializer_class = PurchaseOrderReportSerializer + queryset = report.models.PurchaseOrderReport.objects.all() + serializer_class = report.serializers.PurchaseOrderReportSerializer class PurchaseOrderReportList(PurchaseOrderReportMixin, ReportListView): @@ -434,8 +422,8 @@ class SalesOrderReportMixin(ReportFilterMixin): ITEM_MODEL = order.models.SalesOrder ITEM_KEY = 'order' - queryset = SalesOrderReport.objects.all() - serializer_class = SalesOrderReportSerializer + queryset = report.models.SalesOrderReport.objects.all() + serializer_class = report.serializers.SalesOrderReportSerializer class SalesOrderReportList(SalesOrderReportMixin, ReportListView): @@ -462,8 +450,8 @@ class ReturnOrderReportMixin(ReportFilterMixin): ITEM_MODEL = order.models.ReturnOrder ITEM_KEY = 'order' - queryset = ReturnOrderReport.objects.all() - serializer_class = ReturnOrderReportSerializer + queryset = report.models.ReturnOrderReport.objects.all() + serializer_class = report.serializers.ReturnOrderReportSerializer class ReturnOrderReportList(ReturnOrderReportMixin, ReportListView): @@ -489,8 +477,8 @@ class StockLocationReportMixin(ReportFilterMixin): ITEM_MODEL = StockLocation ITEM_KEY = 'location' - queryset = StockLocationReport.objects.all() - serializer_class = StockLocationReportSerializer + queryset = report.models.StockLocationReport.objects.all() + serializer_class = report.serializers.StockLocationReportSerializer class StockLocationReportList(StockLocationReportMixin, ReportListView): @@ -511,7 +499,57 @@ class StockLocationReportPrint(StockLocationReportMixin, ReportPrintMixin, Retri pass +class ReportSnippetList(ListCreateAPI): + """API endpoint for listing ReportSnippet objects.""" + + queryset = report.models.ReportSnippet.objects.all() + serializer_class = report.serializers.ReportSnippetSerializer + + +class ReportSnippetDetail(RetrieveUpdateDestroyAPI): + """API endpoint for a single ReportSnippet object.""" + + queryset = report.models.ReportSnippet.objects.all() + serializer_class = report.serializers.ReportSnippetSerializer + + +class ReportAssetList(ListCreateAPI): + """API endpoint for listing ReportAsset objects.""" + + queryset = report.models.ReportAsset.objects.all() + serializer_class = report.serializers.ReportAssetSerializer + + +class ReportAssetDetail(RetrieveUpdateDestroyAPI): + """API endpoint for a single ReportAsset object.""" + + queryset = report.models.ReportAsset.objects.all() + serializer_class = report.serializers.ReportAssetSerializer + + report_api_urls = [ + # Report assets + path( + 'asset/', + include([ + path( + '/', ReportAssetDetail.as_view(), name='api-report-asset-detail' + ), + path('', ReportAssetList.as_view(), name='api-report-asset-list'), + ]), + ), + # Report snippets + path( + 'snippet/', + include([ + path( + '/', + ReportSnippetDetail.as_view(), + name='api-report-snippet-detail', + ), + path('', ReportSnippetList.as_view(), name='api-report-snippet-list'), + ]), + ), # Purchase order reports path( 'po/', @@ -528,7 +566,7 @@ report_api_urls = [ path( 'metadata/', MetadataView.as_view(), - {'model': PurchaseOrderReport}, + {'model': report.models.PurchaseOrderReport}, name='api-po-report-metadata', ), path( @@ -558,7 +596,7 @@ report_api_urls = [ path( 'metadata/', MetadataView.as_view(), - {'model': SalesOrderReport}, + {'model': report.models.SalesOrderReport}, name='api-so-report-metadata', ), path( @@ -586,7 +624,7 @@ report_api_urls = [ path( 'metadata/', MetadataView.as_view(), - {'model': ReturnOrderReport}, + {'model': report.models.ReturnOrderReport}, name='api-so-report-metadata', ), path( @@ -617,7 +655,7 @@ report_api_urls = [ path( 'metadata/', MetadataView.as_view(), - {'model': BuildReport}, + {'model': report.models.BuildReport}, name='api-build-report-metadata', ), path( @@ -645,7 +683,7 @@ report_api_urls = [ path( 'metadata/', MetadataView.as_view(), - {'model': BillOfMaterialsReport}, + {'model': report.models.BillOfMaterialsReport}, name='api-bom-report-metadata', ), path('', BOMReportDetail.as_view(), name='api-bom-report-detail'), @@ -671,7 +709,7 @@ report_api_urls = [ path( 'metadata/', MetadataView.as_view(), - {'report': TestReport}, + {'report': report.models.TestReport}, name='api-stockitem-testreport-metadata', ), path( @@ -705,7 +743,7 @@ report_api_urls = [ path( 'metadata/', MetadataView.as_view(), - {'report': StockLocationReport}, + {'report': report.models.StockLocationReport}, name='api-stocklocation-report-metadata', ), path( diff --git a/InvenTree/report/models.py b/InvenTree/report/models.py index 269b38ee6c..6575b494cb 100644 --- a/InvenTree/report/models.py +++ b/InvenTree/report/models.py @@ -7,6 +7,7 @@ import sys from django.conf import settings from django.core.cache import cache +from django.core.exceptions import ValidationError from django.core.validators import FileExtensionValidator from django.db import models from django.template import Context, Template @@ -17,6 +18,7 @@ from django.utils.translation import gettext_lazy as _ import build.models import common.models import InvenTree.exceptions +import InvenTree.helpers import InvenTree.models import order.models import part.models @@ -249,8 +251,8 @@ class ReportTemplateBase(MetadataMixin, ReportBase): context = self.get_context_data(request) context['base_url'] = get_base_url(request=request) - context['date'] = datetime.datetime.now().date() - context['datetime'] = datetime.datetime.now() + context['date'] = InvenTree.helpers.current_date() + context['datetime'] = InvenTree.helpers.current_time() context['page_size'] = self.get_report_size() context['report_template'] = self context['report_description'] = self.description @@ -585,10 +587,7 @@ class ReturnOrderReport(ReportTemplateBase): def rename_snippet(instance, filename): """Function to rename a report snippet once uploaded.""" - filename = os.path.basename(filename) - - path = os.path.join('report', 'snippets', filename) - + path = ReportSnippet.snippet_path(filename) fullpath = settings.MEDIA_ROOT.joinpath(path).resolve() # If the snippet file is the *same* filename as the one being uploaded, @@ -610,6 +609,40 @@ class ReportSnippet(models.Model): Useful for 'common' template actions, sub-templates, etc """ + def __str__(self) -> str: + """String representation of a ReportSnippet instance.""" + return f'snippets/{self.filename}' + + @property + def filename(self): + """Return the filename of the asset.""" + path = self.snippet.name + if path: + return os.path.basename(path) + else: + return '-' + + @staticmethod + def snippet_path(filename): + """Return the fully-qualified snippet path for the given filename.""" + return os.path.join('report', 'snippets', os.path.basename(str(filename))) + + def validate_unique(self, exclude=None): + """Validate that this report asset is unique.""" + proposed_path = self.snippet_path(self.snippet) + + if ( + ReportSnippet.objects.filter(snippet=proposed_path) + .exclude(pk=self.pk) + .count() + > 0 + ): + raise ValidationError({ + 'snippet': _('Snippet file with this name already exists') + }) + + return super().validate_unique(exclude) + snippet = models.FileField( upload_to=rename_snippet, verbose_name=_('Snippet'), @@ -626,19 +659,20 @@ class ReportSnippet(models.Model): def rename_asset(instance, filename): """Function to rename an asset file when uploaded.""" - filename = os.path.basename(filename) - - path = os.path.join('report', 'assets', filename) + path = ReportAsset.asset_path(filename) + fullpath = settings.MEDIA_ROOT.joinpath(path).resolve() # If the asset file is the *same* filename as the one being uploaded, # delete the original one from the media directory if str(filename) == str(instance.asset): - fullpath = settings.MEDIA_ROOT.joinpath(path).resolve() - if fullpath.exists(): + # Check for existing asset file with the same name logger.info("Deleting existing asset file: '%s'", filename) os.remove(fullpath) + # Ensure the cache is deleted for this asset + cache.delete(fullpath) + return path @@ -652,7 +686,35 @@ class ReportAsset(models.Model): def __str__(self): """String representation of a ReportAsset instance.""" - return os.path.basename(self.asset.name) + return f'assets/{self.filename}' + + @property + def filename(self): + """Return the filename of the asset.""" + path = self.asset.name + if path: + return os.path.basename(path) + else: + return '-' + + @staticmethod + def asset_path(filename): + """Return the fully-qualified asset path for the given filename.""" + return os.path.join('report', 'assets', os.path.basename(str(filename))) + + def validate_unique(self, exclude=None): + """Validate that this report asset is unique.""" + proposed_path = self.asset_path(self.asset) + + if ( + ReportAsset.objects.filter(asset=proposed_path).exclude(pk=self.pk).count() + > 0 + ): + raise ValidationError({ + 'asset': _('Asset file with this name already exists') + }) + + return super().validate_unique(exclude) # Asset file asset = models.FileField( diff --git a/InvenTree/report/serializers.py b/InvenTree/report/serializers.py index 362aa3519e..320c489a37 100644 --- a/InvenTree/report/serializers.py +++ b/InvenTree/report/serializers.py @@ -1,20 +1,13 @@ """API serializers for the reporting models.""" +from rest_framework import serializers + +import report.models from InvenTree.serializers import ( InvenTreeAttachmentSerializerField, InvenTreeModelSerializer, ) -from .models import ( - BillOfMaterialsReport, - BuildReport, - PurchaseOrderReport, - ReturnOrderReport, - SalesOrderReport, - StockLocationReport, - TestReport, -) - class ReportSerializerBase(InvenTreeModelSerializer): """Base class for report serializer.""" @@ -24,7 +17,16 @@ class ReportSerializerBase(InvenTreeModelSerializer): @staticmethod def report_fields(): """Generic serializer fields for a report template.""" - return ['pk', 'name', 'description', 'template', 'filters', 'enabled'] + return [ + 'pk', + 'name', + 'description', + 'template', + 'filters', + 'page_size', + 'landscape', + 'enabled', + ] class TestReportSerializer(ReportSerializerBase): @@ -33,7 +35,7 @@ class TestReportSerializer(ReportSerializerBase): class Meta: """Metaclass options.""" - model = TestReport + model = report.models.TestReport fields = ReportSerializerBase.report_fields() @@ -43,7 +45,7 @@ class BuildReportSerializer(ReportSerializerBase): class Meta: """Metaclass options.""" - model = BuildReport + model = report.models.BuildReport fields = ReportSerializerBase.report_fields() @@ -53,7 +55,7 @@ class BOMReportSerializer(ReportSerializerBase): class Meta: """Metaclass options.""" - model = BillOfMaterialsReport + model = report.models.BillOfMaterialsReport fields = ReportSerializerBase.report_fields() @@ -63,7 +65,7 @@ class PurchaseOrderReportSerializer(ReportSerializerBase): class Meta: """Metaclass options.""" - model = PurchaseOrderReport + model = report.models.PurchaseOrderReport fields = ReportSerializerBase.report_fields() @@ -73,7 +75,7 @@ class SalesOrderReportSerializer(ReportSerializerBase): class Meta: """Metaclass options.""" - model = SalesOrderReport + model = report.models.SalesOrderReport fields = ReportSerializerBase.report_fields() @@ -83,7 +85,7 @@ class ReturnOrderReportSerializer(ReportSerializerBase): class Meta: """Metaclass options.""" - model = ReturnOrderReport + model = report.models.ReturnOrderReport fields = ReportSerializerBase.report_fields() @@ -93,5 +95,30 @@ class StockLocationReportSerializer(ReportSerializerBase): class Meta: """Metaclass options.""" - model = StockLocationReport + model = report.models.StockLocationReport fields = ReportSerializerBase.report_fields() + + +class ReportSnippetSerializer(InvenTreeModelSerializer): + """Serializer class for the ReportSnippet model.""" + + class Meta: + """Metaclass options.""" + + model = report.models.ReportSnippet + + fields = ['pk', 'snippet', 'description'] + + snippet = InvenTreeAttachmentSerializerField() + + +class ReportAssetSerializer(InvenTreeModelSerializer): + """Serializer class for the ReportAsset model.""" + + class Meta: + """Meta class options.""" + + model = report.models.ReportAsset + fields = ['pk', 'asset', 'description'] + + asset = InvenTreeAttachmentSerializerField() diff --git a/InvenTree/report/templates/report/inventree_bill_of_materials_report.html b/InvenTree/report/templates/report/inventree_bill_of_materials_report.html index f2dd287b5b..8f34911bfc 100644 --- a/InvenTree/report/templates/report/inventree_bill_of_materials_report.html +++ b/InvenTree/report/templates/report/inventree_bill_of_materials_report.html @@ -11,7 +11,7 @@ margin-top: 4cm; {% endblock page_margin %} {% block bottom_left %} -content: "v{{ report_revision }} - {{ date.isoformat }}"; +content: "v{{ report_revision }} - {% format_date date %}"; {% endblock bottom_left %} {% block bottom_center %} diff --git a/InvenTree/report/templates/report/inventree_build_order_base.html b/InvenTree/report/templates/report/inventree_build_order_base.html index 23b76f85b2..dfb177a9fa 100644 --- a/InvenTree/report/templates/report/inventree_build_order_base.html +++ b/InvenTree/report/templates/report/inventree_build_order_base.html @@ -74,7 +74,7 @@ margin-top: 4cm; {% endblock style %} {% block bottom_left %} -content: "v{{ report_revision }} - {{ date.isoformat }}"; +content: "v{{ report_revision }} - {% format_date date %}"; {% endblock bottom_left %} {% block header_content %} @@ -119,13 +119,13 @@ content: "v{{ report_revision }} - {{ date.isoformat }}"; {% trans "Issued" %} - {% render_date build.creation_date %} + {% format_date build.creation_date %} {% trans "Target Date" %} {% if build.target_date %} - {% render_date build.target_date %} + {% format_date build.target_date %} {% else %} Not specified {% endif %} diff --git a/InvenTree/report/templates/report/inventree_order_report_base.html b/InvenTree/report/templates/report/inventree_order_report_base.html index ceaf3edd7e..6f936681dc 100644 --- a/InvenTree/report/templates/report/inventree_order_report_base.html +++ b/InvenTree/report/templates/report/inventree_order_report_base.html @@ -12,7 +12,7 @@ margin-top: 4cm; {% endblock page_margin %} {% block bottom_left %} -content: "v{{ report_revision }} - {{ date.isoformat }}"; +content: "v{{ report_revision }} - {% format_date date %}"; {% endblock bottom_left %} {% block bottom_center %} diff --git a/InvenTree/report/templates/report/inventree_slr_report.html b/InvenTree/report/templates/report/inventree_slr_report.html index f10c74d318..f2e13ff843 100644 --- a/InvenTree/report/templates/report/inventree_slr_report.html +++ b/InvenTree/report/templates/report/inventree_slr_report.html @@ -11,7 +11,7 @@ margin-top: 4cm; {% endblock page_margin %} {% block bottom_left %} -content: "v{{ report_revision }} - {{ date.isoformat }}"; +content: "v{{ report_revision }} - {% format_date date %}"; {% endblock bottom_left %} {% block bottom_center %} diff --git a/InvenTree/report/templates/report/inventree_test_report_base.html b/InvenTree/report/templates/report/inventree_test_report_base.html index 3afcdb474b..4e25b4598f 100644 --- a/InvenTree/report/templates/report/inventree_test_report_base.html +++ b/InvenTree/report/templates/report/inventree_test_report_base.html @@ -10,7 +10,7 @@ } {% block bottom_left %} -content: "{{ date.isoformat }}"; +content: "{% format_date date %}"; {% endblock bottom_left %} {% block bottom_center %} @@ -133,7 +133,7 @@ content: "{% trans 'Stock Item Test Report' %}"; {% endif %} {{ test_result.value }} {{ test_result.user.username }} - {{ test_result.date.date.isoformat }} + {% format_date test_result.date.date %} {% else %} {% if test_template.required %} {% trans "No result (required)" %} diff --git a/InvenTree/report/templatetags/report.py b/InvenTree/report/templatetags/report.py index e66cc326a9..aea2105abb 100644 --- a/InvenTree/report/templatetags/report.py +++ b/InvenTree/report/templatetags/report.py @@ -410,7 +410,10 @@ def format_number(number, **kwargs): except ValueError: pass - value = str(number) + # Re-encode, and normalize again + value = Decimal(number).normalize() + value = format(value, 'f') + value = str(value) leading = kwargs.get('leading', None) @@ -422,3 +425,37 @@ def format_number(number, **kwargs): pass return value + + +@register.simple_tag +def format_datetime(datetime, timezone=None, format=None): + """Format a datetime object for display. + + Arguments: + datetime: The datetime object to format + timezone: The timezone to use for the date (defaults to the server timezone) + format: The format string to use (defaults to ISO formatting) + """ + datetime = InvenTree.helpers.to_local_time(datetime, timezone) + + if format: + return datetime.strftime(format) + else: + return datetime.isoformat() + + +@register.simple_tag +def format_date(date, timezone=None, format=None): + """Format a date object for display. + + Arguments: + date: The date to format + timezone: The timezone to use for the date (defaults to the server timezone) + format: The format string to use (defaults to ISO formatting) + """ + date = InvenTree.helpers.to_local_time(date, timezone).date() + + if format: + return date.strftime(format) + else: + return date.isoformat() diff --git a/InvenTree/report/tests.py b/InvenTree/report/tests.py index ab9b68f83c..e44d19b467 100644 --- a/InvenTree/report/tests.py +++ b/InvenTree/report/tests.py @@ -3,20 +3,22 @@ import os import shutil from io import StringIO -from pathlib import Path from django.conf import settings from django.core.cache import cache from django.http.response import StreamingHttpResponse -from django.test import TestCase +from django.test import TestCase, override_settings from django.urls import reverse +from django.utils import timezone from django.utils.safestring import SafeString +import pytz from PIL import Image import report.models as report_models from build.models import Build from common.models import InvenTreeSetting, InvenTreeUserSetting +from InvenTree.files import MEDIA_STORAGE_DIR, TEMPLATES_DIR from InvenTree.unit_test import InvenTreeAPITestCase from report.templatetags import barcode as barcode_tags from report.templatetags import report as report_tags @@ -153,6 +155,37 @@ class ReportTagTest(TestCase): self.assertEqual(report_tags.multiply(2.3, 4), 9.2) self.assertEqual(report_tags.divide(100, 5), 20) + @override_settings(TIME_ZONE='America/New_York') + def test_date_tags(self): + """Test for date formatting tags. + + - Source timezone is Australia/Sydney + - Server timezone is America/New York + """ + time = timezone.datetime( + year=2024, + month=3, + day=13, + hour=12, + minute=30, + second=0, + tzinfo=pytz.timezone('Australia/Sydney'), + ) + + # Format a set of tests: timezone, format, expected + tests = [ + (None, None, '2024-03-12T22:25:00-04:00'), + (None, '%d-%m-%y', '12-03-24'), + ('UTC', None, '2024-03-13T02:25:00+00:00'), + ('UTC', '%d-%B-%Y', '13-March-2024'), + ('Europe/Amsterdam', None, '2024-03-13T03:25:00+01:00'), + ('Europe/Amsterdam', '%y-%m-%d %H:%M', '24-03-13 03:25'), + ] + + for tz, fmt, expected in tests: + result = report_tags.format_datetime(time, tz, fmt) + self.assertEqual(result, expected) + class BarcodeTagTest(TestCase): """Unit tests for the barcode template tags.""" @@ -216,11 +249,9 @@ class ReportTest(InvenTreeAPITestCase): def copyReportTemplate(self, filename, description): """Copy the provided report template into the required media directory.""" - src_dir = Path(__file__).parent.joinpath('templates', 'report') - + src_dir = TEMPLATES_DIR.joinpath('report', 'templates', 'report') template_dir = os.path.join('report', 'inventree', self.model.getSubdir()) - - dst_dir = settings.MEDIA_ROOT.joinpath(template_dir) + dst_dir = MEDIA_STORAGE_DIR.joinpath(template_dir) if not dst_dir.exists(): # pragma: no cover dst_dir.mkdir(parents=True, exist_ok=True) diff --git a/InvenTree/stock/api.py b/InvenTree/stock/api.py index bd5d59fc4e..f2b26743bc 100644 --- a/InvenTree/stock/api.py +++ b/InvenTree/stock/api.py @@ -11,12 +11,15 @@ from django.urls import include, path from django.utils.translation import gettext_lazy as _ from django_filters import rest_framework as rest_filters +from drf_spectacular.types import OpenApiTypes +from drf_spectacular.utils import extend_schema_field from rest_framework import status from rest_framework.response import Response from rest_framework.serializers import ValidationError import common.models import common.settings +import InvenTree.helpers import stock.serializers as StockSerializers from build.models import Build from build.serializers import BuildSerializer @@ -480,9 +483,17 @@ class StockFilter(rest_filters.FilterSet): # Relationship filters manufacturer = rest_filters.ModelChoiceFilter( label='Manufacturer', - queryset=Company.objects.filter(is_manufacturer=True), - field_name='manufacturer_part__manufacturer', + queryset=Company.objects.all(), + method='filter_manufacturer', ) + + @extend_schema_field(OpenApiTypes.INT) + def filter_manufacturer(self, queryset, name, company): + """Filter by manufacturer.""" + return queryset.filter( + Q(is_manufacturer=True) & Q(manufacturer_part__manufacturer=company) + ) + supplier = rest_filters.ModelChoiceFilter( label='Supplier', queryset=Company.objects.filter(is_supplier=True), @@ -725,6 +736,7 @@ class StockFilter(rest_filters.FilterSet): label='Ancestor', queryset=StockItem.objects.all(), method='filter_ancestor' ) + @extend_schema_field(OpenApiTypes.INT) def filter_ancestor(self, queryset, name, ancestor): """Filter based on ancestor stock item.""" return queryset.filter(parent__in=ancestor.get_descendants(include_self=True)) @@ -735,6 +747,7 @@ class StockFilter(rest_filters.FilterSet): method='filter_category', ) + @extend_schema_field(OpenApiTypes.INT) def filter_category(self, queryset, name, category): """Filter based on part category.""" child_categories = category.get_descendants(include_self=True) @@ -745,6 +758,7 @@ class StockFilter(rest_filters.FilterSet): label=_('BOM Item'), queryset=BomItem.objects.all(), method='filter_bom_item' ) + @extend_schema_field(OpenApiTypes.INT) def filter_bom_item(self, queryset, name, bom_item): """Filter based on BOM item.""" return queryset.filter(bom_item.get_stock_filter()) @@ -753,6 +767,7 @@ class StockFilter(rest_filters.FilterSet): label=_('Part Tree'), queryset=Part.objects.all(), method='filter_part_tree' ) + @extend_schema_field(OpenApiTypes.INT) def filter_part_tree(self, queryset, name, part_tree): """Filter based on part tree.""" return queryset.filter(part__tree_id=part_tree.tree_id) @@ -761,6 +776,7 @@ class StockFilter(rest_filters.FilterSet): label=_('Company'), queryset=Company.objects.all(), method='filter_company' ) + @extend_schema_field(OpenApiTypes.INT) def filter_company(self, queryset, name, company): """Filter by company (either manufacturer or supplier).""" return queryset.filter( @@ -795,7 +811,7 @@ class StockFilter(rest_filters.FilterSet): # No filtering, does not make sense return queryset - stale_date = datetime.now().date() + timedelta(days=stale_days) + stale_date = InvenTree.helpers.current_date() + timedelta(days=stale_days) stale_filter = ( StockItem.IN_STOCK_FILTER & ~Q(expiry_date=None) @@ -813,6 +829,7 @@ class StockList(APIDownloadMixin, ListCreateDestroyAPIView): - GET: Return a list of all StockItem objects (with optional query filters) - POST: Create a new StockItem + - DELETE: Delete multiple StockItem objects """ serializer_class = StockSerializers.StockItemSerializer @@ -890,7 +907,7 @@ class StockList(APIDownloadMixin, ListCreateDestroyAPIView): # An expiry date was *not* specified - try to infer it! if expiry_date is None and part.default_expiry > 0: - data['expiry_date'] = datetime.now().date() + timedelta( + data['expiry_date'] = InvenTree.helpers.current_date() + timedelta( days=part.default_expiry ) @@ -1034,7 +1051,7 @@ class StockList(APIDownloadMixin, ListCreateDestroyAPIView): filedata = dataset.export(export_format) - filename = f'InvenTree_StockItems_{datetime.now().strftime("%d-%b-%Y")}.{export_format}' + filename = f'InvenTree_StockItems_{InvenTree.helpers.current_date().strftime("%d-%b-%Y")}.{export_format}' return DownloadFile(filedata, filename) @@ -1199,7 +1216,7 @@ class StockList(APIDownloadMixin, ListCreateDestroyAPIView): class StockAttachmentList(AttachmentMixin, ListCreateDestroyAPIView): - """API endpoint for listing (and creating) a StockItemAttachment (file upload).""" + """API endpoint for listing, creating and bulk deleting a StockItemAttachment (file upload).""" queryset = StockItemAttachment.objects.all() serializer_class = StockSerializers.StockItemAttachmentSerializer diff --git a/InvenTree/stock/migrations/0109_add_additional_test_fields.py b/InvenTree/stock/migrations/0109_add_additional_test_fields.py new file mode 100644 index 0000000000..aa2c12f489 --- /dev/null +++ b/InvenTree/stock/migrations/0109_add_additional_test_fields.py @@ -0,0 +1,28 @@ +# Generated by Django 3.2.23 on 2023-12-18 18:52 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('stock', '0108_auto_20240219_0252'), + ] + + operations = [ + migrations.AddField( + model_name='stockitemtestresult', + name='finished_datetime', + field=models.DateTimeField(blank=True, help_text='The timestamp of the test finish', verbose_name='Finished'), + ), + migrations.AddField( + model_name='stockitemtestresult', + name='started_datetime', + field=models.DateTimeField(blank=True, help_text='The timestamp of the test start', verbose_name='Started'), + ), + migrations.AddField( + model_name='stockitemtestresult', + name='test_station', + field=models.CharField(blank=True, help_text='The identifier of the test station where the test was performed', max_length=500, verbose_name='Test station'), + ), + ] diff --git a/InvenTree/stock/migrations/0110_alter_stockitemtestresult_finished_datetime_and_more.py b/InvenTree/stock/migrations/0110_alter_stockitemtestresult_finished_datetime_and_more.py new file mode 100644 index 0000000000..5ded82c134 --- /dev/null +++ b/InvenTree/stock/migrations/0110_alter_stockitemtestresult_finished_datetime_and_more.py @@ -0,0 +1,23 @@ +# Generated by Django 4.2.11 on 2024-03-27 04:25 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('stock', '0109_add_additional_test_fields'), + ] + + operations = [ + migrations.AlterField( + model_name='stockitemtestresult', + name='finished_datetime', + field=models.DateTimeField(blank=True, help_text='The timestamp of the test finish', null=True, verbose_name='Finished'), + ), + migrations.AlterField( + model_name='stockitemtestresult', + name='started_datetime', + field=models.DateTimeField(blank=True, help_text='The timestamp of the test start', null=True, verbose_name='Started'), + ), + ] diff --git a/InvenTree/stock/models.py b/InvenTree/stock/models.py index 99d3ae9eee..3e7e95504b 100644 --- a/InvenTree/stock/models.py +++ b/InvenTree/stock/models.py @@ -4,7 +4,7 @@ from __future__ import annotations import logging import os -from datetime import datetime, timedelta +from datetime import timedelta from decimal import Decimal, InvalidOperation from django.conf import settings @@ -319,9 +319,9 @@ def generate_batch_code(): 'STOCK_BATCH_CODE_TEMPLATE', '' ) - now = datetime.now() + now = InvenTree.helpers.current_time() - # Pass context data through to the template randering. + # Pass context data through to the template rendering. # The following context variables are available for custom batch code generation context = { 'date': now, @@ -412,7 +412,7 @@ class StockItem( EXPIRED_FILTER = ( IN_STOCK_FILTER & ~Q(expiry_date=None) - & Q(expiry_date__lt=datetime.now().date()) + & Q(expiry_date__lt=InvenTree.helpers.current_date()) ) def update_serial_number(self): @@ -1011,7 +1011,7 @@ class StockItem( if not self.in_stock: return False - today = datetime.now().date() + today = InvenTree.helpers.current_date() stale_days = common.models.InvenTreeSetting.get_setting('STOCK_STALE_DAYS') @@ -1036,7 +1036,7 @@ class StockItem( if not self.in_stock: return False - today = datetime.now().date() + today = InvenTree.helpers.current_date() return self.expiry_date < today @@ -1438,7 +1438,7 @@ class StockItem( item=self, tracking_type=entry_type.value, user=user, - date=datetime.now(), + date=InvenTree.helpers.current_time(), notes=notes, deltas=deltas, ) @@ -1962,7 +1962,7 @@ class StockItem( if count < 0: return False - self.stocktake_date = datetime.now().date() + self.stocktake_date = InvenTree.helpers.current_date() self.stocktake_user = user if self.updateQuantity(count): @@ -2363,6 +2363,9 @@ class StockItemTestResult(InvenTree.models.InvenTreeMetadataModel): value: Recorded test output value (optional) attachment: Link to StockItem attachment (optional) notes: Extra user notes related to the test (optional) + test_station: the name of the test station where the test was performed + started_datetime: Date when the test was started + finished_datetime: Date when the test was finished user: User who uploaded the test result date: Date the test result was recorded """ @@ -2453,4 +2456,27 @@ class StockItemTestResult(InvenTree.models.InvenTreeMetadataModel): user = models.ForeignKey(User, on_delete=models.SET_NULL, blank=True, null=True) + test_station = models.CharField( + blank=True, + max_length=500, + verbose_name=_('Test station'), + help_text=_('The identifier of the test station where the test was performed'), + ) + + started_datetime = models.DateTimeField( + blank=True, + null=True, + verbose_name=_('Started'), + help_text=_('The timestamp of the test start'), + ) + + finished_datetime = models.DateTimeField( + blank=True, + null=True, + verbose_name=_('Finished'), + help_text=_('The timestamp of the test finish'), + ) + + user = models.ForeignKey(User, on_delete=models.SET_NULL, blank=True, null=True) + date = models.DateTimeField(auto_now_add=True, editable=False) diff --git a/InvenTree/stock/serializers.py b/InvenTree/stock/serializers.py index cae8460a41..a820de9ccc 100644 --- a/InvenTree/stock/serializers.py +++ b/InvenTree/stock/serializers.py @@ -6,7 +6,7 @@ from decimal import Decimal from django.core.exceptions import ValidationError as DjangoValidationError from django.db import transaction -from django.db.models import BooleanField, Case, Count, Q, Value, When +from django.db.models import BooleanField, Case, Count, Prefetch, Q, Value, When from django.db.models.functions import Coalesce from django.utils.translation import gettext_lazy as _ @@ -20,6 +20,7 @@ import company.models import InvenTree.helpers import InvenTree.serializers import InvenTree.status_codes +import part.filters as part_filters import part.models as part_models import stock.filters from company.serializers import SupplierPartSerializer @@ -63,6 +64,9 @@ class StockItemTestResultSerializer(InvenTree.serializers.InvenTreeModelSerializ 'value', 'attachment', 'notes', + 'test_station', + 'started_datetime', + 'finished_datetime', 'user', 'user_detail', 'date', @@ -136,7 +140,18 @@ class StockItemTestResultSerializer(InvenTree.serializers.InvenTreeModelSerializ part=stock_item.part, test_name=test_name ) - return super().validate(data) + data = super().validate(data) + + started = data.get('started_datetime') + finished = data.get('finished_datetime') + + if started is not None and finished is not None and started > finished: + raise ValidationError({ + 'finished_datetime': _( + 'The test finished time cannot be earlier than the test started time' + ) + }) + return data class StockItemSerializerBrief(InvenTree.serializers.InvenTreeModelSerializer): @@ -289,7 +304,14 @@ class StockItemSerializer(InvenTree.serializers.InvenTreeTagModelSerializer): 'location', 'sales_order', 'purchase_order', - 'part', + Prefetch( + 'part', + queryset=part_models.Part.objects.annotate( + category_default_location=part_filters.annotate_default_location( + 'category__' + ) + ).prefetch_related(None), + ), 'part__category', 'part__pricing_data', 'supplier_part', @@ -323,7 +345,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_date = datetime.now().date() + timedelta(days=stale_days) + stale_date = InvenTree.helpers.current_date() + timedelta(days=stale_days) stale_filter = ( StockItem.IN_STOCK_FILTER & ~Q(expiry_date=None) @@ -576,9 +598,14 @@ class InstallStockItemSerializer(serializers.Serializer): parent_item = self.context['item'] parent_part = parent_item.part - # Check if the selected part is in the Bill of Materials of the parent item - if not parent_part.check_if_part_in_bom(stock_item.part): - raise ValidationError(_('Selected part is not in the Bill of Materials')) + if common.models.InvenTreeSetting.get_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 + if not parent_part.check_if_part_in_bom(stock_item.part): + raise ValidationError( + _('Selected part is not in the Bill of Materials') + ) return stock_item @@ -799,7 +826,7 @@ class StockChangeStatusSerializer(serializers.Serializer): deltas = {'status': status} - now = datetime.now() + now = InvenTree.helpers.current_time() # Instead of performing database updates for each item, # perform bulk database updates (much more efficient) @@ -886,6 +913,7 @@ class LocationSerializer(InvenTree.serializers.InvenTreeTagModelSerializer): 'pathstring', 'path', 'items', + 'sublocations', 'owner', 'icon', 'custom_icon', @@ -911,13 +939,18 @@ class LocationSerializer(InvenTree.serializers.InvenTreeTagModelSerializer): def annotate_queryset(queryset): """Annotate extra information to the queryset.""" # Annotate the number of stock items which exist in this category (including subcategories) - queryset = queryset.annotate(items=stock.filters.annotate_location_items()) + queryset = queryset.annotate( + items=stock.filters.annotate_location_items(), + sublocations=stock.filters.annotate_sub_locations(), + ) return queryset url = serializers.CharField(source='get_absolute_url', read_only=True) - items = serializers.IntegerField(read_only=True) + items = serializers.IntegerField(read_only=True, label=_('Stock Items')) + + sublocations = serializers.IntegerField(read_only=True, label=_('Sublocations')) level = serializers.IntegerField(read_only=True) diff --git a/InvenTree/stock/templates/stock/item.html b/InvenTree/stock/templates/stock/item.html index 30272d53a9..33810b6da6 100644 --- a/InvenTree/stock/templates/stock/item.html +++ b/InvenTree/stock/templates/stock/item.html @@ -183,7 +183,10 @@ $('#stock-item-install').click(function() { + {% settings_value "STOCK_ENFORCE_BOM_INSTALLATION" as enforce_bom %} + installStockItem({{ item.pk }}, {{ item.part.pk }}, { + enforce_bom: {% js_bool enforce_bom %}, onSuccess: function(response) { $("#installed-table").bootstrapTable('refresh'); } @@ -228,10 +231,13 @@ }); }); + {% settings_value "TEST_STATION_DATA" as test_station_fields %} + loadStockTestResultsTable( $("#test-result-table"), { part: {{ item.part.id }}, stock_item: {{ item.id }}, + test_station_fields: {% js_bool test_station_fields %} } ); diff --git a/InvenTree/stock/test_api.py b/InvenTree/stock/test_api.py index 42de5d7b8f..a72cf06525 100644 --- a/InvenTree/stock/test_api.py +++ b/InvenTree/stock/test_api.py @@ -446,7 +446,7 @@ class StockLocationTest(StockAPITestCase): StockLocation.objects.rebuild() - with self.assertNumQueriesLessThan(10): + with self.assertNumQueriesLessThan(12): response = self.get(reverse('api-location-tree'), expected_code=200) self.assertEqual(len(response.data), StockLocation.objects.count()) diff --git a/InvenTree/templates/InvenTree/settings/build.html b/InvenTree/templates/InvenTree/settings/build.html index 764e333621..781bb71525 100644 --- a/InvenTree/templates/InvenTree/settings/build.html +++ b/InvenTree/templates/InvenTree/settings/build.html @@ -13,6 +13,7 @@ {% include "InvenTree/settings/setting.html" with key="BUILDORDER_REFERENCE_PATTERN" %} + {% include "InvenTree/settings/setting.html" with key="BUILDORDER_REQUIRE_RESPONSIBLE" %} {% include "InvenTree/settings/setting.html" with key="PREVENT_BUILD_COMPLETION_HAVING_INCOMPLETED_TESTS" %}
diff --git a/InvenTree/templates/InvenTree/settings/po.html b/InvenTree/templates/InvenTree/settings/po.html index 4571df5091..6759d14bf9 100644 --- a/InvenTree/templates/InvenTree/settings/po.html +++ b/InvenTree/templates/InvenTree/settings/po.html @@ -11,6 +11,7 @@ {% include "InvenTree/settings/setting.html" with key="PURCHASEORDER_REFERENCE_PATTERN" %} + {% include "InvenTree/settings/setting.html" with key="PURCHASEORDER_REQUIRE_RESPONSIBLE" %} {% include "InvenTree/settings/setting.html" with key="PURCHASEORDER_EDIT_COMPLETED_ORDERS" icon='fa-edit' %} {% include "InvenTree/settings/setting.html" with key="PURCHASEORDER_AUTO_COMPLETE" icon='fa-check-circle' %} diff --git a/InvenTree/templates/InvenTree/settings/report.html b/InvenTree/templates/InvenTree/settings/report.html index baf57c9bfc..683625bd74 100644 --- a/InvenTree/templates/InvenTree/settings/report.html +++ b/InvenTree/templates/InvenTree/settings/report.html @@ -15,6 +15,7 @@ {% include "InvenTree/settings/setting.html" with key="REPORT_ENABLE" icon="fa-file-pdf" %} {% include "InvenTree/settings/setting.html" with key="REPORT_DEFAULT_PAGE_SIZE" icon="fa-print" %} {% include "InvenTree/settings/setting.html" with key="REPORT_DEBUG_MODE" icon="fa-laptop-code" %} + {% include "InvenTree/settings/setting.html" with key="REPORT_LOG_ERRORS" icon="fa-exclamation-circle" %} {% include "InvenTree/settings/setting.html" with key="REPORT_ENABLE_TEST_REPORT" icon="fa-vial" %} {% include "InvenTree/settings/setting.html" with key="REPORT_ATTACH_TEST_REPORT" icon="fa-file-upload" %} diff --git a/InvenTree/templates/InvenTree/settings/returns.html b/InvenTree/templates/InvenTree/settings/returns.html index 306bb95873..617302af6d 100644 --- a/InvenTree/templates/InvenTree/settings/returns.html +++ b/InvenTree/templates/InvenTree/settings/returns.html @@ -13,6 +13,7 @@ {% include "InvenTree/settings/setting.html" with key="RETURNORDER_ENABLED" icon="fa-check-circle" %} {% include "InvenTree/settings/setting.html" with key="RETURNORDER_REFERENCE_PATTERN" %} + {% include "InvenTree/settings/setting.html" with key="RETURNORDER_REQUIRE_RESPONSIBLE" %} {% include "InvenTree/settings/setting.html" with key="RETURNORDER_EDIT_COMPLETED_ORDERS" icon="fa-edit" %}
diff --git a/InvenTree/templates/InvenTree/settings/so.html b/InvenTree/templates/InvenTree/settings/so.html index c97a47cc18..9be6df6025 100644 --- a/InvenTree/templates/InvenTree/settings/so.html +++ b/InvenTree/templates/InvenTree/settings/so.html @@ -12,6 +12,7 @@ {% include "InvenTree/settings/setting.html" with key="SALESORDER_REFERENCE_PATTERN" %} + {% include "InvenTree/settings/setting.html" with key="SALESORDER_REQUIRE_RESPONSIBLE" %} {% include "InvenTree/settings/setting.html" with key="SALESORDER_DEFAULT_SHIPMENT" icon="fa-truck-loading" %} {% include "InvenTree/settings/setting.html" with key="SALESORDER_EDIT_COMPLETED_ORDERS" icon='fa-edit' %} diff --git a/InvenTree/templates/InvenTree/settings/stock.html b/InvenTree/templates/InvenTree/settings/stock.html index 388118555c..9ccca21af0 100644 --- a/InvenTree/templates/InvenTree/settings/stock.html +++ b/InvenTree/templates/InvenTree/settings/stock.html @@ -22,6 +22,8 @@ {% include "InvenTree/settings/setting.html" with key="STOCK_OWNERSHIP_CONTROL" icon="fa-users" %} {% include "InvenTree/settings/setting.html" with key="STOCK_LOCATION_DEFAULT_ICON" icon="fa-icons" %} {% include "InvenTree/settings/setting.html" with key="STOCK_SHOW_INSTALLED_ITEMS" icon="fa-sitemap" %} + {% include "InvenTree/settings/setting.html" with key="STOCK_ENFORCE_BOM_INSTALLATION" icon="fa-check-circle" %} + {% include "InvenTree/settings/setting.html" with key="TEST_STATION_DATA" icon="fa-network-wired" %}
diff --git a/InvenTree/templates/js/translated/forms.js b/InvenTree/templates/js/translated/forms.js index 6d448a0d14..3f5539b7d8 100644 --- a/InvenTree/templates/js/translated/forms.js +++ b/InvenTree/templates/js/translated/forms.js @@ -2590,6 +2590,9 @@ function constructInput(name, parameters, options={}) { case 'date': func = constructDateInput; break; + case 'datetime': + func = constructDateTimeInput; + break; case 'candy': func = constructCandyInput; break; @@ -2860,6 +2863,19 @@ function constructDateInput(name, parameters) { } +/* + * Construct a field for a datetime input + */ +function constructDateTimeInput(name, parameters) { + + return constructInputOptions( + name, + 'datetimeinput form-control', + 'datetime', + parameters + ); +} + /* * Construct a "candy" field input * No actual field data! diff --git a/InvenTree/templates/js/translated/stock.js b/InvenTree/templates/js/translated/stock.js index c6a1f5f2de..5254eec00f 100644 --- a/InvenTree/templates/js/translated/stock.js +++ b/InvenTree/templates/js/translated/stock.js @@ -1367,11 +1367,11 @@ function noResultBadge() { return `{% trans "NO RESULT" %}`; } -function formatDate(row) { +function formatDate(row, date, options={}) { // Function for formatting date field - var html = renderDate(row.date); + var html = renderDate(date, options); - if (row.user_detail) { + if (row.user_detail && !options.no_user_detail) { html += `${row.user_detail.username}`; } @@ -1392,6 +1392,13 @@ function stockItemTestResultFields(options={}) { notes: { icon: 'fa-sticky-note', }, + test_station: {}, + started_datetime: { + icon: 'fa-calendar-alt', + }, + finished_datetime: { + icon: 'fa-calendar-alt', + }, stock_item: { hidden: true, }, @@ -1530,7 +1537,30 @@ function loadStockTestResultsTable(table, options) { title: '{% trans "Test Date" %}', sortable: true, formatter: function(value, row) { - return formatDate(row); + return formatDate(row, row.date); + }, + }, + { + field: 'test_station', + title: '{% trans "Test station" %}', + visible: false, + }, + { + field: 'started_timestamp', + title: '{% trans "Test started" %}', + sortable: true, + visible: false, + formatter: function(value, row) { + return formatDate(row, row.started_datetime, {showTime: true, no_user_detail: true}); + }, + }, + { + field: 'finished_timestamp', + title: '{% trans "Test finished" %}', + sortable: true, + visible: false, + formatter: function(value, row) { + return formatDate(row, row.finished_datetime, {showTime: true, no_user_detail: true}); }, }, { @@ -1656,6 +1686,12 @@ function loadStockTestResultsTable(table, options) { fields['template']['value'] = templateId; fields['template']['filters']['part'] = options.part; + if (!options.test_station_fields) { + delete fields['test_station']; + delete fields['started_datetime']; + delete fields['finished_datetime']; + } + constructForm('{% url "api-stock-test-result-list" %}', { method: 'POST', fields: fields, @@ -3204,7 +3240,7 @@ function installStockItem(stock_item_id, part_id, options={}) { auto_fill: true, filters: { trackable: true, - in_bom_for: part_id, + in_bom_for: options.enforce_bom ? part_id : undefined, } }, stock_item: { diff --git a/InvenTree/users/models.py b/InvenTree/users/models.py index 806f39586d..e2ddcd3417 100644 --- a/InvenTree/users/models.py +++ b/InvenTree/users/models.py @@ -53,7 +53,7 @@ def default_token_expiry(): """Generate an expiry date for a newly created token.""" # TODO: Custom value for default expiry timeout # TODO: For now, tokens last for 1 year - return datetime.datetime.now().date() + datetime.timedelta(days=365) + return InvenTree.helpers.current_date() + datetime.timedelta(days=365) class ApiToken(AuthToken, InvenTree.models.MetadataMixin): @@ -163,7 +163,9 @@ class ApiToken(AuthToken, InvenTree.models.MetadataMixin): @admin.display(boolean=True, description=_('Expired')) def expired(self): """Test if this token has expired.""" - return self.expiry is not None and self.expiry < datetime.datetime.now().date() + return ( + self.expiry is not None and self.expiry < InvenTree.helpers.current_date() + ) @property @admin.display(boolean=True, description=_('Active')) @@ -717,7 +719,10 @@ def check_user_role(user, role, permission): # First, check the cache key = f'role_{user}_{role}_{permission}' - result = cache.get(key) + try: + result = cache.get(key) + except Exception: + result = None if result is not None: return result @@ -745,7 +750,11 @@ def check_user_role(user, role, permission): break # Save result to cache - cache.set(key, result, timeout=3600) + try: + cache.set(key, result, timeout=3600) + except Exception: + pass + return result diff --git a/InvenTree/web/templatetags/spa_helper.py b/InvenTree/web/templatetags/spa_helper.py index 003682402a..f894bc7aa1 100644 --- a/InvenTree/web/templatetags/spa_helper.py +++ b/InvenTree/web/templatetags/spa_helper.py @@ -24,14 +24,20 @@ def spa_bundle(manifest_path: Union[str, Path] = '', app: str = 'web'): return f'{settings.STATIC_URL}{app}/{file}' if manifest_path == '': - manifest_path = Path(__file__).parent.parent.joinpath( - 'static/web/manifest.json' + manifest = Path(__file__).parent.parent.joinpath( + 'static/web/.vite/manifest.json' ) - manifest = Path(manifest_path) + else: + manifest = Path(manifest_path) if not manifest.exists(): - logger.error('Manifest file not found') - return + # Try old path for manifest file + manifest = Path(__file__).parent.parent.joinpath('static/web/manifest.json') + + # Final check - fail if manifest file not found + if not manifest.exists(): + logger.error('Manifest file not found') + return try: manifest_data = json.load(manifest.open()) @@ -40,13 +46,6 @@ def spa_bundle(manifest_path: Union[str, Path] = '', app: str = 'web'): return return_string = '' - # CSS (based on index.css file as entrypoint) - css_index = manifest_data.get('index.css') - if css_index: - return_string += ( - f'' - ) - # JS (based on index.html file as entrypoint) index = manifest_data.get('index.html') dynamic_files = index.get('dynamicImports', []) diff --git a/InvenTree/web/tests.py b/InvenTree/web/tests.py index eca79fa94b..e3ab9042dc 100644 --- a/InvenTree/web/tests.py +++ b/InvenTree/web/tests.py @@ -26,14 +26,11 @@ class TemplateTagTest(InvenTreeTestCase): def test_spa_bundle(self): """Test the 'spa_bundle' template tag.""" resp = spa_helper.spa_bundle() - self.assertTrue( - resp.startswith(' bool: """Return true if preferred method is CUI.""" return obj['preferred_method'] == 'cui' diff --git a/README.md b/README.md index 04367955c5..4f3786e266 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ [![Documentation Status](https://readthedocs.org/projects/inventree/badge/?version=latest)](https://inventree.readthedocs.io/en/latest/?badge=latest) ![Docker Build](https://github.com/inventree/inventree/actions/workflows/docker.yaml/badge.svg) [![OpenSSF Best Practices](https://bestpractices.coreinfrastructure.org/projects/7179/badge)](https://bestpractices.coreinfrastructure.org/projects/7179) +[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/inventree/InvenTree/badge)](https://securityscorecards.dev/viewer/?uri=github.com/inventree/InvenTree) [![Netlify Status](https://api.netlify.com/api/v1/badges/9bbb2101-0a4d-41e7-ad56-b63fb6053094/deploy-status)](https://app.netlify.com/sites/inventree/deploys) [![DeepSource](https://app.deepsource.com/gh/inventree/InvenTree.svg/?label=active+issues&show_trend=false&token=trZWqixKLk2t-RXtpSIAslVJ)](https://app.deepsource.com/gh/inventree/InvenTree/) diff --git a/contrib/packager.io/functions.sh b/contrib/packager.io/functions.sh index a0509a504a..97dbd71027 100755 --- a/contrib/packager.io/functions.sh +++ b/contrib/packager.io/functions.sh @@ -183,7 +183,7 @@ function create_initscripts() { ${INIT_CMD} stop nginx echo "# Setting up nginx to ${SETUP_NGINX_FILE}" # Always use the latest nginx config; important if new headers are added / needed for security - cp ${APP_HOME}/docker/production/nginx.prod.conf ${SETUP_NGINX_FILE} + cp ${APP_HOME}/contrib/packager.io/nginx.prod.conf ${SETUP_NGINX_FILE} sed -i s/inventree-server:8000/localhost:6000/g ${SETUP_NGINX_FILE} sed -i s=var/www=opt/inventree/data=g ${SETUP_NGINX_FILE} # Start nginx diff --git a/contrib/packager.io/nginx.prod.conf b/contrib/packager.io/nginx.prod.conf new file mode 100644 index 0000000000..a78b9ebd0f --- /dev/null +++ b/contrib/packager.io/nginx.prod.conf @@ -0,0 +1,67 @@ + +server { + + # Listen for connection on (internal) port 80 + # If you are exposing this server to the internet, you should use HTTPS! + # In which case, you should also set up a redirect from HTTP to HTTPS, and listen on port 443 + # See the Nginx documentation for more details + listen 80; + + real_ip_header proxy_protocol; + + location / { + + proxy_set_header Host $http_host; + proxy_set_header X-Forwarded-By $server_addr:$server_port; + proxy_set_header X-Forwarded-For $remote_addr; + proxy_set_header X-Forwarded-Proto $scheme; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header CLIENT_IP $remote_addr; + + proxy_pass_request_headers on; + + proxy_redirect off; + + client_max_body_size 100M; + + proxy_buffering off; + proxy_request_buffering off; + + # Do not touch this unless you have a specific reason - this and the docker-compose need to match + proxy_pass http://inventree-server:8000; + } + + # Redirect any requests for static files + location /static/ { + alias /var/www/static/; + autoindex on; + + # Caching settings + expires 30d; + add_header Pragma public; + add_header Cache-Control "public"; + } + + # Redirect any requests for media files + location /media/ { + alias /var/www/media/; + + # Media files require user authentication + auth_request /auth; + + # Content header to force download + add_header Content-disposition "attachment"; + } + + # Use the 'user' API endpoint for auth + location /auth { + internal; + + proxy_pass http://inventree-server:8000/auth/; + + proxy_pass_request_body off; + proxy_set_header Content-Length ""; + proxy_set_header X-Original-URI $request_uri; + } + +} diff --git a/docker.dev.env b/docker.dev.env index 966efdcee9..72162b2a26 100644 --- a/docker.dev.env +++ b/docker.dev.env @@ -19,4 +19,4 @@ INVENTREE_DB_PASSWORD=pgpassword INVENTREE_PLUGINS_ENABLED=True # Auto run migrations? -INVENTREE_AUTO_UPDATE=False +INVENTREE_AUTO_UPDATE=True diff --git a/docker/.env b/docker/.env index 39ac250ccb..447ede63b4 100644 --- a/docker/.env +++ b/docker/.env @@ -43,7 +43,7 @@ INVENTREE_AUTO_UPDATE=True # Image tag that should be used INVENTREE_TAG=stable -# Site URL - update this to match your host (and update the Caddyfile too!) +# Site URL - update this to match your host INVENTREE_SITE_URL="http://inventree.localhost" COMPOSE_PROJECT_NAME=inventree diff --git a/docker/Caddyfile b/docker/Caddyfile index ad7b2c26ba..8e5e2f81a7 100644 --- a/docker/Caddyfile +++ b/docker/Caddyfile @@ -4,33 +4,51 @@ # - INVENTREE_SERVER: The internal URL of the Inventree container (default: http://inventree-server:8000) (log_common) { - log { - output file /var/log/caddy/{args.0}.access.log - } + log { + output file /var/log/caddy/{args[0]}.access.log + } +} + +(cors-headers) { + header Allow GET,HEAD,OPTIONS + header Access-Control-Allow-Origin * + header Access-Control-Allow-Methods GET,HEAD,OPTIONS + header Access-Control-Allow-Headers Authorization,Content-Type,User-Agent + + @cors_preflight{args[0]} method OPTIONS + + handle @cors_preflight{args[0]} { + respond "" 204 + } } # Change the host to your domain (this will serve at inventree.localhost) {$INVENTREE_SITE_URL:inventree.localhost} { - import log_common inventree + import log_common inventree - encode gzip + encode gzip - request_body { - max_size 100MB - } + request_body { + max_size 100MB + } - handle_path /static/* { - root * /var/www/static - file_server - } + handle_path /static/* { + import cors-headers static - handle_path /media/* { - forward_auth {$INVENTREE_SERVER:"http://inventree-server:8000"} { - uri /auth/ - } - root * /var/www/media - file_server - } + root * /var/www/static + file_server + } - reverse_proxy {$INVENTREE_SERVER:"http://inventree-server:8000"} + handle_path /media/* { + import cors-headers media + + root * /var/www/media + file_server + + forward_auth {$INVENTREE_SERVER:"http://inventree-server:8000"} { + uri /auth/ + } + } + + reverse_proxy {$INVENTREE_SERVER:"http://inventree-server:8000"} } diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 7b948cf7ab..5fa1532481 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -4,7 +4,7 @@ version: "3.8" # - PostgreSQL as the database backend # - gunicorn as the InvenTree web server # - django-q as the InvenTree background worker process -# - nginx as a reverse proxy +# - Caddy as a reverse proxy # - redis as the cache manager (optional, disabled by default) # --------------------- diff --git a/docker/install_build_packages.sh b/docker/install_build_packages.sh index ca7ea49ddf..358a256e7f 100644 --- a/docker/install_build_packages.sh +++ b/docker/install_build_packages.sh @@ -4,6 +4,7 @@ # Note that for postgreslql, we use the 13 version, which matches the version used in the InvenTree docker image apk add gcc g++ musl-dev openssl-dev libffi-dev cargo python3-dev openldap-dev \ + libstdc++ build-base linux-headers py3-grpcio \ jpeg-dev openjpeg-dev libwebp-dev zlib-dev \ sqlite sqlite-dev \ mariadb-connector-c-dev mariadb-client mariadb-dev \ diff --git a/docs/.gitignore b/docs/.gitignore index ecbeb1b0ab..ea8649cfa3 100644 --- a/docs/.gitignore +++ b/docs/.gitignore @@ -10,6 +10,9 @@ env/ _build/ site/ +# Generated API schema files +docs/api/schema/*.yml + # Temp files releases.json versions.json diff --git a/docs/docs/api/api.md b/docs/docs/api/api.md index 0d8b24b128..7f2c9328d0 100644 --- a/docs/docs/api/api.md +++ b/docs/docs/api/api.md @@ -17,6 +17,17 @@ The API is self-documenting, and the documentation is provided alongside any Inv {% include 'img.html' %} {% endwith %} +### Schema Description + The API schema is also documented in the [API Schema](./schema.md) page. + +### Generating Schema File + +If you want to generate the API schema file yourself (for example to use with an external client, use the `invoke schema` command. Run with the `-help` command to see available options. + +``` +invoke schema -help +``` + ## Authentication Users must be authenticated to gain access to the InvenTree API. The API accepts either basic username:password authentication, or token authentication. Token authentication is recommended as it provides much faster API access. diff --git a/docs/docs/api/schema.md b/docs/docs/api/schema.md new file mode 100644 index 0000000000..441e977e2e --- /dev/null +++ b/docs/docs/api/schema.md @@ -0,0 +1,40 @@ +--- +title: InvenTree API Schema +--- + +The InvenTree API is implemented using the [Django REST framework](https://www.django-rest-framework.org). +The API schema as documented below is generated using the [drf-spectactular](https://github.com/tfranzel/drf-spectacular/) extension. + +## API Version + +This documentation is for API version: `171` + +!!! tip "API Schema History" + We track API schema changes, and provide a snapshot of each API schema version in the [API schema repository](https://github.com/inventree/schema/). + +## API Schema File + +The API schema file is available for download, and can be used for generating client libraries, or for testing API endpoints. + +## API Schema Documentation + +API schema documentation is split into the following categories: + +| Category | Description | +| --- | --- | +| [Authorization and Authentication](./schema/auth.md) | Authorization and Authentication | +| [Background Task Management](./schema/background-task.md) | Background Task Management | +| [Barcode Scanning](./schema/barcode.md) | Barcode Scanning | +| [Bill of Materials](./schema/bom.md) | Bill of Materials | +| [Build Order Management](./schema/build.md) | Build Order Management | +| [Company Management](./schema/company.md) | Company Management | +| [Label Printing](./schema/label.md) | Label Printing | +| [External Machine Management](./schema/machine.md) | External Machine Management | +| [External Order Management](./schema/order.md) | External Order Management | +| [Parts and Part Categories](./schema/part.md) | Parts and Part Categories | +| [Plugin Functionality](./schema/plugins.md) | Plugin Functionality | +| [Report Generation](./schema/report.md) | Report Generation | +| [Settings Management](./schema/settings.md) | Settings Management | +| [Stock and Stock Locations](./schema/stock.md) | Stock and Stock Locations | +| [User Management](./schema/user.md) | User Management | +| [General](./schema/general.md) | General API endpoints | diff --git a/docs/docs/api/schema/auth.md b/docs/docs/api/schema/auth.md new file mode 100644 index 0000000000..62c8b50103 --- /dev/null +++ b/docs/docs/api/schema/auth.md @@ -0,0 +1,7 @@ +--- +title: Authorization and Authentication +--- + +The *Authorization and Authentication* section of the InvenTree API schema is documented below. + +[OAD(./docs/docs/api/schema/auth.yml)] diff --git a/docs/docs/api/schema/background-task.md b/docs/docs/api/schema/background-task.md new file mode 100644 index 0000000000..b1d5ad0b92 --- /dev/null +++ b/docs/docs/api/schema/background-task.md @@ -0,0 +1,7 @@ +--- +title: Background Task Management +--- + +The *Background Task Management* section of the InvenTree API schema is documented below. + +[OAD(./docs/docs/api/schema/background-task.yml)] diff --git a/docs/docs/api/schema/barcode.md b/docs/docs/api/schema/barcode.md new file mode 100644 index 0000000000..c0f5cab2bf --- /dev/null +++ b/docs/docs/api/schema/barcode.md @@ -0,0 +1,7 @@ +--- +title: Barcode Scanning +--- + +The *Barcode Scanning* section of the InvenTree API schema is documented below. + +[OAD(./docs/docs/api/schema/barcode.yml)] diff --git a/docs/docs/api/schema/bom.md b/docs/docs/api/schema/bom.md new file mode 100644 index 0000000000..cdfd1ff9c2 --- /dev/null +++ b/docs/docs/api/schema/bom.md @@ -0,0 +1,7 @@ +--- +title: Bill of Materials +--- + +The *Bill of Materials* section of the InvenTree API schema is documented below. + +[OAD(./docs/docs/api/schema/bom.yml)] diff --git a/docs/docs/api/schema/build.md b/docs/docs/api/schema/build.md new file mode 100644 index 0000000000..3de0e521c6 --- /dev/null +++ b/docs/docs/api/schema/build.md @@ -0,0 +1,7 @@ +--- +title: Build Order Management +--- + +The *Build Order Management* section of the InvenTree API schema is documented below. + +[OAD(./docs/docs/api/schema/build.yml)] diff --git a/docs/docs/api/schema/company.md b/docs/docs/api/schema/company.md new file mode 100644 index 0000000000..924d899ad4 --- /dev/null +++ b/docs/docs/api/schema/company.md @@ -0,0 +1,7 @@ +--- +title: Company Management +--- + +The *Company Management* section of the InvenTree API schema is documented below. + +[OAD(./docs/docs/api/schema/company.yml)] diff --git a/docs/docs/api/schema/general.md b/docs/docs/api/schema/general.md new file mode 100644 index 0000000000..5da17b815d --- /dev/null +++ b/docs/docs/api/schema/general.md @@ -0,0 +1,7 @@ +--- +title: General API Endpoints +--- + +The *General API Endpoints* section of the InvenTree API schema is documented below. + +[OAD(./docs/docs/api/schema/general.yml)] diff --git a/docs/docs/api/schema/label.md b/docs/docs/api/schema/label.md new file mode 100644 index 0000000000..d4bc47e57c --- /dev/null +++ b/docs/docs/api/schema/label.md @@ -0,0 +1,7 @@ +--- +title: Label Printing +--- + +The *Label Printing* section of the InvenTree API schema is documented below. + +[OAD(./docs/docs/api/schema/label.yml)] diff --git a/docs/docs/api/schema/machine.md b/docs/docs/api/schema/machine.md new file mode 100644 index 0000000000..2fbadd41e6 --- /dev/null +++ b/docs/docs/api/schema/machine.md @@ -0,0 +1,7 @@ +--- +title: External Machine Management +--- + +The *External Machine Management* section of the InvenTree API schema is documented below. + +[OAD(./docs/docs/api/schema/machine.yml)] diff --git a/docs/docs/api/schema/order.md b/docs/docs/api/schema/order.md new file mode 100644 index 0000000000..7f6c8fdfd7 --- /dev/null +++ b/docs/docs/api/schema/order.md @@ -0,0 +1,7 @@ +--- +title: External Order Management +--- + +The *External Order Management* section of the InvenTree API schema is documented below. + +[OAD(./docs/docs/api/schema/order.yml)] diff --git a/docs/docs/api/schema/part.md b/docs/docs/api/schema/part.md new file mode 100644 index 0000000000..67c73eb0fb --- /dev/null +++ b/docs/docs/api/schema/part.md @@ -0,0 +1,7 @@ +--- +title: Parts and Part Categories +--- + +The *Parts and Part Categories* section of the InvenTree API schema is documented below. + +[OAD(./docs/docs/api/schema/part.yml)] diff --git a/docs/docs/api/schema/plugins.md b/docs/docs/api/schema/plugins.md new file mode 100644 index 0000000000..ee0263cffa --- /dev/null +++ b/docs/docs/api/schema/plugins.md @@ -0,0 +1,7 @@ +--- +title: Plugin Functionality +--- + +The *Plugin Functionality* section of the InvenTree API schema is documented below. + +[OAD(./docs/docs/api/schema/plugins.yml)] diff --git a/docs/docs/api/schema/report.md b/docs/docs/api/schema/report.md new file mode 100644 index 0000000000..dfad6d74be --- /dev/null +++ b/docs/docs/api/schema/report.md @@ -0,0 +1,7 @@ +--- +title: Report Generation +--- + +The *Report Generation* section of the InvenTree API schema is documented below. + +[OAD(./docs/docs/api/schema/report.yml)] diff --git a/docs/docs/api/schema/settings.md b/docs/docs/api/schema/settings.md new file mode 100644 index 0000000000..4a6d4f4337 --- /dev/null +++ b/docs/docs/api/schema/settings.md @@ -0,0 +1,7 @@ +--- +title: Settings Management +--- + +The *Settings Management* section of the InvenTree API schema is documented below. + +[OAD(./docs/docs/api/schema/settings.yml)] diff --git a/docs/docs/api/schema/stock.md b/docs/docs/api/schema/stock.md new file mode 100644 index 0000000000..7b961e4b5b --- /dev/null +++ b/docs/docs/api/schema/stock.md @@ -0,0 +1,7 @@ +--- +title: Stock and Stock Locations +--- + +The *Stock and Stock Locations* section of the InvenTree API schema is documented below. + +[OAD(./docs/docs/api/schema/stock.yml)] diff --git a/docs/docs/api/schema/user.md b/docs/docs/api/schema/user.md new file mode 100644 index 0000000000..e0ebba2770 --- /dev/null +++ b/docs/docs/api/schema/user.md @@ -0,0 +1,7 @@ +--- +title: User Management +--- + +The *User Management* section of the InvenTree API schema is documented below. + +[OAD(./docs/docs/api/schema/user.yml)] diff --git a/docs/docs/assets/images/report/template-editor.png b/docs/docs/assets/images/report/template-editor.png new file mode 100644 index 0000000000..20b8e8bbfe Binary files /dev/null and b/docs/docs/assets/images/report/template-editor.png differ diff --git a/docs/docs/assets/images/report/template-table.png b/docs/docs/assets/images/report/template-table.png new file mode 100644 index 0000000000..36ec1164fd Binary files /dev/null and b/docs/docs/assets/images/report/template-table.png differ diff --git a/docs/docs/concepts/units.md b/docs/docs/concepts/units.md index d65d122bc5..7b26ae445f 100644 --- a/docs/docs/concepts/units.md +++ b/docs/docs/concepts/units.md @@ -34,6 +34,15 @@ Scientific notation is also supported, and can be used to represent very large o !!! tip "Case Sensitive" Support for scientific notation is case sensitive. For example, `1E3` is a valid value, but `1e3` is not. +### Feet and Inches + +Shorthand notation is supported for feet and inches. For example, the following values would all be considered *valid*: + +- `3'`: `3 feet` +- `6"` : `6 inches` + +However, note that compound measurements (e.g. `3'6"`) are not supported. + ### Case Sensitivity The pint library is case sensitive, and units must be specified in the correct case. For example, `kg` is a valid unit, but `KG` is not. In particular, you need to pay close attention when using SI prefixes (e.g. `k` for kilo, `M` for mega, `n` for nano, etc). @@ -48,7 +57,7 @@ The [unit of measure](../part/part.md#units-of-measure) field for the [Part](../ ### Supplier Part -The [supplier part](../part/part/#supplier-parts) model uses real-world units to convert between supplier part quantities and internal stock quantities. Unit conversion rules ensure that only compatible unit types can be supplied +The [supplier part](../part/part.md/#supplier-parts) model uses real-world units to convert between supplier part quantities and internal stock quantities. Unit conversion rules ensure that only compatible unit types can be supplied ### Part Parameter diff --git a/docs/docs/extend/plugins/tags.md b/docs/docs/extend/plugins/tags.md index ebcfdc3502..c7853e0baa 100644 --- a/docs/docs/extend/plugins/tags.md +++ b/docs/docs/extend/plugins/tags.md @@ -8,7 +8,7 @@ Several models in InvenTree can be tagged with arbitrary tags. Tags are useful f Tags are shared between all models that can be tagged. The following models can be tagged: -- [Parts](../../part/part.md) and [Supplier Parts](../../order/company#supplier-parts)/[Manufacturer Part](../../order/company#manufacturer-parts) +- [Parts](../../part/part.md) and [Supplier Parts](../../order/company.md#supplier-parts)/[Manufacturer Part](../../order/company.md#manufacturer-parts) - [Stock Items](../../stock/stock.md#stock-item) / [Stock Location](../../stock/stock.md#stock-location) diff --git a/docs/docs/part/create.md b/docs/docs/part/create.md index 0eab451789..46750fbd67 100644 --- a/docs/docs/part/create.md +++ b/docs/docs/part/create.md @@ -64,6 +64,6 @@ If the *Add Supplier Data* option is checked, then supplier part and manufacture The following alternative methods for creating parts are supported: -- [Via the REST API](../../api/api) -- [Using the Python library](../../api/python) -- [Within the Admin interface](../../settings/admin) +- [Via the REST API](../api/api.md) +- [Using the Python library](../api/python/python.md) +- [Within the Admin interface](../settings/admin.md) diff --git a/docs/docs/part/notification.md b/docs/docs/part/notification.md index 48d0bffde9..27aed5a9cd 100644 --- a/docs/docs/part/notification.md +++ b/docs/docs/part/notification.md @@ -7,7 +7,7 @@ title: Part Notifications Users can select to receive notifications when certain events occur. !!! warning "Email Configuration Required" - External notifications require correct [email configuration](../../start/config/#email-settings). They also need to be enabled in the settings under notifications`. + External notifications require correct [email configuration](../start/config.md#email-settings). They also need to be enabled in the settings under notifications`. !!! warning "Valid Email Address" Each user must have a valid email address associated with their account to receive email notifications @@ -50,7 +50,7 @@ Any users who are subscribed to notifications for the part in question will rece ### Build Order Notification -When a new [Build Order](../../build/build/) is created, the InvenTree software checks to see if any of the parts required to complete the order are low on stock. +When a new [Build Order](../build/build.md) is created, the InvenTree software checks to see if any of the parts required to complete the order are low on stock. If there are any parts with low stock, a notification is generated for any users subscribed to notifications for the part being built. diff --git a/docs/docs/part/trackable.md b/docs/docs/part/trackable.md index 55aba96f89..4810c0a94c 100644 --- a/docs/docs/part/trackable.md +++ b/docs/docs/part/trackable.md @@ -2,7 +2,7 @@ title: Trackable Parts --- -Denoting a part as *Trackble* changes the way that [stock items](../../stock/stock) associated with the particular part are handled in the database. A trackable part also has more restrictions imposed by the database scheme. +Denoting a part as *Trackble* changes the way that [stock items](../stock/stock.md) associated with the particular part are handled in the database. A trackable part also has more restrictions imposed by the database scheme. ## Stock Tracking diff --git a/docs/docs/releases/0.1.5.md b/docs/docs/releases/0.1.5.md index 593c68cc39..1199a8e317 100644 --- a/docs/docs/releases/0.1.5.md +++ b/docs/docs/releases/0.1.5.md @@ -24,7 +24,7 @@ Refer to the [build documentation](../build/build.md#overdue-builds) for more in ### Stock Item Expiry -[#1202](https://github.com/inventree/InvenTree/pull/1202) introduces the concept of an *Expiry Date* for Stock Items. For further information, refer to the [expiry documentation](../../stock/expiry). +[#1202](https://github.com/inventree/InvenTree/pull/1202) introduces the concept of an *Expiry Date* for Stock Items. For further information, refer to the [expiry documentation](../stock/expiry.md). ### Stock Ownership diff --git a/docs/docs/releases/0.2.1.md b/docs/docs/releases/0.2.1.md index 036e03ec7b..c992bd7db6 100644 --- a/docs/docs/releases/0.2.1.md +++ b/docs/docs/releases/0.2.1.md @@ -14,7 +14,7 @@ title: Release 0.2.1 !!! warning "Configuration Required" Refer to the [email configuration - options](../../start/config/#email-settings). + options](../start/config.md#email-settings). ### Manufacturer Parts diff --git a/docs/docs/releases/0.6.0.md b/docs/docs/releases/0.6.0.md index 90a0971499..5edd0d2d97 100644 --- a/docs/docs/releases/0.6.0.md +++ b/docs/docs/releases/0.6.0.md @@ -54,7 +54,7 @@ PR [#2119](https://github.com/inventree/InvenTree/pull/2119) adds the ability to ### SSO Support -PR [#2017](https://github.com/inventree/InvenTree/pull/2017) adds support for SSO (single sign on) authentication. SSO integration requires configuration by the system administrator. Refer to the [SSO documentation](../settings/sso) for further information. +PR [#2017](https://github.com/inventree/InvenTree/pull/2017) adds support for SSO (single sign on) authentication. SSO integration requires configuration by the system administrator. Refer to the [SSO documentation](../settings/SSO.md) for further information. ### BOM Substitution @@ -74,7 +74,7 @@ PR [#2208](https://github.com/inventree/InvenTree/pull/2208) provides notificati ### MFA Support -PR [#2221](https://github.com/inventree/InvenTree/pull/2221) adds support for MFA (multi factor authentication). This enables admins to require all users to enable MFA as a second auth step. Refer to the [documentation](../settings/mfa) for further information. +PR [#2221](https://github.com/inventree/InvenTree/pull/2221) adds support for MFA (multi factor authentication). This enables admins to require all users to enable MFA as a second auth step. Refer to the [documentation](../settings/MFA.md) for further information. ### Stock Item Forms PR [#2198](https://github.com/inventree/InvenTree/pull/2198) provides a major refactor of stock item forms, for creating and editing stock items. These forms have been migrated to the REST API, providing a much more responsive user experience. diff --git a/docs/docs/report/bom.md b/docs/docs/report/bom.md index f6f2864e01..13de616082 100644 --- a/docs/docs/report/bom.md +++ b/docs/docs/report/bom.md @@ -40,7 +40,7 @@ margin-top: 4cm; {% endblock %} {% block bottom_left %} -content: "v{{report_revision}} - {{ date.isoformat }}"; +content: "v{{report_revision}} - {% format_date date %}"; {% endblock %} {% block bottom_center %} diff --git a/docs/docs/report/build.md b/docs/docs/report/build.md index f1b138f5eb..ab6b740d7e 100644 --- a/docs/docs/report/build.md +++ b/docs/docs/report/build.md @@ -186,7 +186,7 @@ margin-top: 4cm; {% endblock %} {% block bottom_left %} -content: "v{{report_revision}} - {{ date.isoformat }}"; +content: "v{{report_revision}} - {% format_date date %}"; {% endblock %} {% block header_content %} @@ -230,13 +230,13 @@ content: "v{{report_revision}} - {{ date.isoformat }}"; {% trans "Issued" %} - {% render_date build.creation_date %} + {% format_date build.creation_date %} {% trans "Target Date" %} {% if build.target_date %} - {% render_date build.target_date %} + {% format_date build.target_date %} {% else %} Not specified {% endif %} diff --git a/docs/docs/report/helpers.md b/docs/docs/report/helpers.md index 6aa5475e23..b275ede4b9 100644 --- a/docs/docs/report/helpers.md +++ b/docs/docs/report/helpers.md @@ -64,7 +64,7 @@ To return an element corresponding to a certain key in a container which support {% endraw %} ``` -## Formatting Numbers +## Number Formatting The helper function `format_number` allows for some common number formatting options. It takes a number (or a number-like string) as an input, as well as some formatting arguments. It returns a *string* containing the formatted number: @@ -78,7 +78,33 @@ The helper function `format_number` allows for some common number formatting opt {% endraw %} ``` -## Rendering Currency +## Date Formatting + +For rendering date and datetime information, the following helper functions are available: + +- `format_date`: Format a date object +- `format_datetime`: Format a datetime object + +Each of these helper functions takes a date or datetime object as an input, and returns a *string* containing the formatted date or datetime. The following additional arguments are available: + +| Argument | Description | +| --- | --- | +| timezone | Specify the timezone to render the date in. If not specified, uses the InvenTree server timezone | +| format | Specify the format string to use for rendering the date. If not specified, uses ISO formatting. Refer to the [datetime format codes](https://docs.python.org/3/library/datetime.html#format-codes) for more information! | + +### Example + +A simple example of using the date formatting helper functions: + +```html +{% raw %} +{% load report %} +Date: {% format_date my_date timezone="Australia/Sydney" %} +Datetime: {% format_datetime my_datetime format="%d-%m-%Y %H:%M%S" %} +{% endraw %} +``` + +## Currency Formatting The helper function `render_currency` allows for simple rendering of currency data. This function can also convert the specified amount of currency into a different target currency: diff --git a/docs/docs/report/report.md b/docs/docs/report/report.md index e82ac5ead6..1bd05c3c6d 100644 --- a/docs/docs/report/report.md +++ b/docs/docs/report/report.md @@ -117,6 +117,7 @@ So, if you are writing a template which has custom formatting, (or any other sec ```html {% raw %} +{% load l10n %}